home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume26 / veos-2.0 / part01 next >
Encoding:
Text File  |  1993-04-25  |  99.2 KB  |  3,100 lines

  1. Newsgroups: comp.sources.unix
  2. From: voodoo@hitl.washington.edu (Geoffery Coco)
  3. Subject: v26i184: veos-2.0 - The Virtual Environment Operating Shell, V2.0, Part01/16
  4. Sender: unix-sources-moderator@vix.com
  5. Approved: paul@vix.com
  6.  
  7. Submitted-By: voodoo@hitl.washington.edu (Geoffery Coco)
  8. Posting-Number: Volume 26, Issue 184
  9. Archive-Name: veos-2.0/part01
  10.  
  11. VEOS is an extendable environment for prototyping distributed applications
  12. for unix.  The VEOS application programmer's interface is provided by XLISP
  13. 2.1 (by David Betz).  XLISP provides familiar program control; VEOS
  14. provides interprocess message passing and content addressable database
  15. access.
  16.  
  17. VEOS (The Virtual Environment Operating Shell) was developed for
  18. distributed Virtual Reality applications at The Human Interface Technology
  19. Lab in Seattle and has been in use for two years.  However, VEOS is by no
  20. means limited to these types of applications.
  21.  
  22. VEOS is ideal for applications where hardware resources are not physically
  23. proximal or where machine-dependent resources (e.g. software packages,
  24. interface devices, etc..) are isolated because of their platform.
  25.  
  26. VEOS is also ideal for prototyping programs which employ coarse grain
  27. parallellism.  That is, VEOS uses heavyweight sequential processes,
  28. corresponding roughly to unix processes.  In this way, VEOS can be used to
  29. utilize a network of workstations as a virtual multiprocessor.
  30.  
  31. C programmers can build custom VEOS tools which are accessable from XLISP
  32. and thus are immediately compatible with other VEOS tools.  Lisp
  33. programmers can quickly design and run distributed programs which utilize
  34. diverse hardware and software resources through these custom tools.
  35.  
  36. HITL Engineers have already built VEOS tools for real-time stereo graphics,
  37. sound, position sensing and voice synthesis and input.  Many of these tools
  38. will also be released in the coming months.
  39.  
  40. VEOS is not an operating system.  VEOS is a user-level framework for
  41. prototyping distributed applications.  Its primary focus is flexibility and
  42. ease of use.  This design comes somewhat at the expense of real-time
  43. performance.  This is not to say, however, that VEOS cannot achieve good
  44. performance with proper application structuring and tuning.
  45.  
  46. Relying on only the most common unix interface, VEOS is platform
  47. independent.  VEOS 2.0 has been extensively tested on platforms such as DEC
  48. 5000, Sun 4, and Silicon Graphics VGX and Indigo.
  49.  
  50.     voodoo@hitl.washington.edu (Geoffery Coco)
  51.  
  52. #! /bin/sh
  53. # This is a shell archive.  Remove anything before this line, then unpack
  54. # it by saving it into a file and typing "sh file".  To overwrite existing
  55. # files, type "sh file -c".  You can also feed this as standard input via
  56. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  57. # will see the following message at the end:
  58. #        "End of archive 1 (of 16)."
  59. # Contents:  FERN_LICENSE MANIFEST README VEOS_LICENSE bin docs
  60. #   kernel_private kernel_private/bin kernel_private/lib
  61. #   kernel_private/src kernel_private/src/fern
  62. #   kernel_private/src/fern/fcon.lsp kernel_private/src/fern/fe.lsp
  63. #   kernel_private/src/fern/fe_locl.lsp
  64. #   kernel_private/src/fern/fph.lsp
  65. #   kernel_private/src/fern/load_bal.lsp
  66. #   kernel_private/src/fern/zoot.lsp kernel_private/src/include
  67. #   kernel_private/src/include/fern.h
  68. #   kernel_private/src/include/fern_prims.h
  69. #   kernel_private/src/include/xv_native_prims.h
  70. #   kernel_private/src/nancy kernel_private/src/shell
  71. #   kernel_private/src/shell/main.c kernel_private/src/talk lib lisp
  72. #   lisp/ancestor-maker.lsp lisp/ancestors lisp/fern.lsp
  73. #   lisp/file_io.lsp lisp/interactive.lsp lisp/tabula_rasa.lsp
  74. #   lisp/test_rpc.lsp src src/include src/kernel_current
  75. #   src/kernel_current/fern src/kernel_current/fern/fcon.lsp
  76. #   src/kernel_current/fern/fe.lsp src/kernel_current/fern/fe_locl.lsp
  77. #   src/kernel_current/fern/fph.lsp
  78. #   src/kernel_current/fern/load_bal.lsp
  79. #   src/kernel_current/fern/zoot.lsp src/kernel_current/include
  80. #   src/kernel_current/include/fern.h
  81. #   src/kernel_current/include/fern_prims.h
  82. #   src/kernel_current/include/xv_native_prims.h
  83. #   src/kernel_current/nancy src/kernel_current/shell
  84. #   src/kernel_current/shell/main.c src/kernel_current/talk
  85. #   src/machine_specific.mk src/utils src/utils/error_check.c
  86. #   src/utils/makefile src/utils/xform_prims.h src/utils/xv_utils.h
  87. #   src/xlisp src/xlisp/Makefile src/xlisp/Makefile.basic
  88. #   src/xlisp/Makefile.machine_specific src/xlisp/bin src/xlisp/lib
  89. #   src/xlisp/xcore src/xlisp/xcore/c src/xlisp/xcore/c/COPYRIGHT
  90. #   src/xlisp/xcore/c/Makefile src/xlisp/xcore/c/osdefs.h
  91. #   src/xlisp/xcore/c/osptrs.h src/xlisp/xcore/doc
  92. # Wrapped by vixie@efficacy.home.vix.com on Sun Apr 25 23:10:30 1993
  93. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  94. if test -f 'FERN_LICENSE' -a "${1}" != "-c" ; then 
  95.   echo shar: Will not clobber existing file \"'FERN_LICENSE'\"
  96. else
  97. echo shar: Extracting \"'FERN_LICENSE'\" \(1514 characters\)
  98. sed "s/^X//" >'FERN_LICENSE' <<'END_OF_FILE'
  99. X*******************************************************************************
  100. X* 
  101. X* 
  102. X*          FERN 1.0 Copyright (C) 1992 Geoffrey P. Coco,
  103. X*              Human Interface Technology Laboratory
  104. X* 
  105. X* 
  106. X* Permission to use, copy, or modify these programs and their documentation
  107. X* without fee for educational and research purposes only is hereby granted,
  108. X* provided that this copyright notice appears on all copies and supporting
  109. X* documentation.  For any other uses of this software, in original or modified
  110. X* form, including but not limited to distribution in whole or in part, specific
  111. X* prior permission must be obtained from HITL.  These programs shall not be
  112. X* used, rewritten, or adapted as the basis of a commercial software or hardware
  113. X* product without first obtaining appropriate licenses from HITL.  HITL makes no
  114. X* representations about the suitability of this software for any purpose.  It is
  115. X* provided "as is" without express or implied warranty.
  116. X* 
  117. X* HITL AND GEOFFREY COCO DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  118. X* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
  119. X* SHALL HITL NOR GEOFFREY COCO BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  120. X* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  121. X* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  122. X* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  123. X* OF THIS SOFTWARE.
  124. X* 
  125. X*******************************************************************************
  126. END_OF_FILE
  127. if test 1514 -ne `wc -c <'FERN_LICENSE'`; then
  128.     echo shar: \"'FERN_LICENSE'\" unpacked with wrong size!
  129. fi
  130. # end of 'FERN_LICENSE'
  131. fi
  132. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  133.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  134. else
  135. echo shar: Extracting \"'MANIFEST'\" \(5181 characters\)
  136. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  137. X   File Name        Archive #    Description
  138. X-----------------------------------------------------------
  139. X FERN_LICENSE               1    
  140. X MANIFEST                   1    
  141. X README                     1    
  142. X VEOS_LICENSE               1    
  143. X bin                        1    
  144. X docs                       1    
  145. X docs/VEOS_The_Complete_Documentation 14    
  146. X docs/xlisp.doc            16    
  147. X kernel_private             1    
  148. X kernel_private/bin         1    
  149. X kernel_private/lib         1    
  150. X kernel_private/makefile    3    
  151. X kernel_private/src         1    
  152. X kernel_private/src/fern    1    
  153. X kernel_private/src/fern/fcon.lsp  1    
  154. X kernel_private/src/fern/fe.lsp  1    
  155. X kernel_private/src/fern/fe_bnd.lsp  5    
  156. X kernel_private/src/fern/fe_ext.lsp  5    
  157. X kernel_private/src/fern/fe_int.lsp  7    
  158. X kernel_private/src/fern/fe_locl.lsp  1    
  159. X kernel_private/src/fern/fern.c  5    
  160. X kernel_private/src/fern/fern.lsp  2    
  161. X kernel_private/src/fern/fgod.lsp  3    
  162. X kernel_private/src/fern/fph.lsp  1    
  163. X kernel_private/src/fern/fx.lsp  4    
  164. X kernel_private/src/fern/load_bal.lsp  1    
  165. X kernel_private/src/fern/local.lsp  2    
  166. X kernel_private/src/fern/zoot.lsp  1    
  167. X kernel_private/src/include  1    
  168. X kernel_private/src/include/fern.h  1    
  169. X kernel_private/src/include/fern_prims.h  1    
  170. X kernel_private/src/include/kernel.h  4    
  171. X kernel_private/src/include/world.h  3    
  172. X kernel_private/src/include/xv_native.h  2    
  173. X kernel_private/src/include/xv_native_prims.h  1    
  174. X kernel_private/src/nancy   1    
  175. X kernel_private/src/nancy/nancy_fundamental.c 13    
  176. X kernel_private/src/nancy/nancy_match.c  8    
  177. X kernel_private/src/shell   1    
  178. X kernel_private/src/shell/main.c  1    
  179. X kernel_private/src/shell/shell.c  4    
  180. X kernel_private/src/shell/xv_glutils.c 15    
  181. X kernel_private/src/shell/xv_native.c 11    
  182. X kernel_private/src/talk    1    
  183. X kernel_private/src/talk/shmem.c  3    
  184. X kernel_private/src/talk/socket.c  7    
  185. X kernel_private/src/talk/talk.c 11    
  186. X lib                        1    
  187. X lisp                       1    
  188. X lisp/ancestor-maker.lsp    1    
  189. X lisp/ancestors             1    
  190. X lisp/fern.lsp              1    
  191. X lisp/file_io.lsp           1    
  192. X lisp/interactive.lsp       1    
  193. X lisp/tabula_rasa.lsp       1    
  194. X lisp/test_rpc.lsp          1    
  195. X src                        1    
  196. X src/include                1    
  197. X src/include/world.h        3    
  198. X src/kernel_current         1    
  199. X src/kernel_current/fern    1    
  200. X src/kernel_current/fern/fcon.lsp  1    
  201. X src/kernel_current/fern/fe.lsp  1    
  202. X src/kernel_current/fern/fe_bnd.lsp  5    
  203. X src/kernel_current/fern/fe_ext.lsp  5    
  204. X src/kernel_current/fern/fe_int.lsp  7    
  205. X src/kernel_current/fern/fe_locl.lsp  1    
  206. X src/kernel_current/fern/fern.c  5    
  207. X src/kernel_current/fern/fern.lsp  2    
  208. X src/kernel_current/fern/fgod.lsp  3    
  209. X src/kernel_current/fern/fph.lsp  1    
  210. X src/kernel_current/fern/fx.lsp  4    
  211. X src/kernel_current/fern/load_bal.lsp  1    
  212. X src/kernel_current/fern/local.lsp  2    
  213. X src/kernel_current/fern/zoot.lsp  1    
  214. X src/kernel_current/include  1    
  215. X src/kernel_current/include/fern.h  1    
  216. X src/kernel_current/include/fern_prims.h  1    
  217. X src/kernel_current/include/kernel.h  4    
  218. X src/kernel_current/include/world.h  3    
  219. X src/kernel_current/include/xv_native.h  2    
  220. X src/kernel_current/include/xv_native_prims.h  1    
  221. X src/kernel_current/nancy   1    
  222. X src/kernel_current/nancy/nancy_fundamental.c 12    
  223. X src/kernel_current/nancy/nancy_match.c  8    
  224. X src/kernel_current/shell   1    
  225. X src/kernel_current/shell/main.c  1    
  226. X src/kernel_current/shell/shell.c  4    
  227. X src/kernel_current/shell/xv_glutils.c 14    
  228. X src/kernel_current/shell/xv_native.c 10    
  229. X src/kernel_current/talk    1    
  230. X src/kernel_current/talk/shmem.c  3    
  231. X src/kernel_current/talk/socket.c  8    
  232. X src/kernel_current/talk/talk.c 11    
  233. X src/machine_specific.mk    1    
  234. X src/utils                  1    
  235. X src/utils/error_check.c    1    
  236. X src/utils/makefile         1    
  237. X src/utils/xform_prims.c    9    
  238. X src/utils/xform_prims.h    1    
  239. X src/utils/xv_utils.c       6    
  240. X src/utils/xv_utils.h       1    
  241. X src/xlisp                  1    
  242. X src/xlisp/Makefile         1    
  243. X src/xlisp/Makefile.basic   1    
  244. X src/xlisp/Makefile.machine_specific  1    
  245. X src/xlisp/bin              1    
  246. X src/xlisp/lib              1    
  247. X src/xlisp/xcore            1    
  248. X src/xlisp/xcore/c          1    
  249. X src/xlisp/xcore/c/COPYRIGHT  1    
  250. X src/xlisp/xcore/c/ChangeLog  3    
  251. X src/xlisp/xcore/c/Makefile  1    
  252. X src/xlisp/xcore/c/osdefs.h  1    
  253. X src/xlisp/xcore/c/osptrs.h  1    
  254. X src/xlisp/xcore/c/unixstuff.c  6    
  255. X src/xlisp/xcore/c/xlbfun.c  9    
  256. X src/xlisp/xcore/c/xlcont.c 12    
  257. X src/xlisp/xcore/c/xldbug.c  2    
  258. X src/xlisp/xcore/c/xldmem.c  8    
  259. X src/xlisp/xcore/c/xldmem.h  3    
  260. X src/xlisp/xcore/c/xleval.c 10    
  261. X src/xlisp/xcore/c/xlfio.c  6    
  262. X src/xlisp/xcore/c/xlftab.c 10    
  263. X src/xlisp/xcore/c/xlglob.c  2    
  264. X src/xlisp/xcore/c/xlimage.c  5    
  265. X src/xlisp/xcore/c/xlinit.c  4    
  266. X src/xlisp/xcore/c/xlio.c   2    
  267. X src/xlisp/xcore/c/xlisp.h  6    
  268. X src/xlisp/xcore/c/xljump.c  2    
  269. X src/xlisp/xcore/c/xllist.c  9    
  270. X src/xlisp/xcore/c/xlmath.c  6    
  271. X src/xlisp/xcore/c/xlobj.c  7    
  272. X src/xlisp/xcore/c/xlpp.c   2    
  273. X src/xlisp/xcore/c/xlprin.c  4    
  274. X src/xlisp/xcore/c/xlread.c  9    
  275. X src/xlisp/xcore/c/xlstr.c  7    
  276. X src/xlisp/xcore/c/xlstruct.c  6    
  277. X src/xlisp/xcore/c/xlsubr.c  2    
  278. X src/xlisp/xcore/c/xlsym.c  2    
  279. X src/xlisp/xcore/c/xlsys.c  2    
  280. X src/xlisp/xcore/c/xmain.c  2    
  281. X src/xlisp/xcore/doc        1    
  282. X src/xlisp/xcore/doc/internals.doc 13    
  283. X src/xlisp/xmodules.h       2    
  284. END_OF_FILE
  285. if test 5181 -ne `wc -c <'MANIFEST'`; then
  286.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  287. fi
  288. # end of 'MANIFEST'
  289. fi
  290. if test -f 'README' -a "${1}" != "-c" ; then 
  291.   echo shar: Will not clobber existing file \"'README'\"
  292. else
  293. echo shar: Extracting \"'README'\" \(386 characters\)
  294. sed "s/^X//" >'README' <<'END_OF_FILE'
  295. X
  296. Xsee file docs/VEOS_The_Complete_Documentation for VEOS introduction 
  297. X
  298. Xsee file kernel_private/makefile for build instructions
  299. X
  300. X[ the file docs/xlisp.ref, at 550KB, was too large to include with the
  301. X  comp.sources.unix release of this package.  xlisp was last posted to
  302. X  comp.sources.misc in that group's tenth volume.  get the manual from
  303. X  an archive site if you need it.                --vix ]
  304. END_OF_FILE
  305. if test 386 -ne `wc -c <'README'`; then
  306.     echo shar: \"'README'\" unpacked with wrong size!
  307. fi
  308. # end of 'README'
  309. fi
  310. if test -f 'VEOS_LICENSE' -a "${1}" != "-c" ; then 
  311.   echo shar: Will not clobber existing file \"'VEOS_LICENSE'\"
  312. else
  313. echo shar: Extracting \"'VEOS_LICENSE'\" \(1853 characters\)
  314. sed "s/^X//" >'VEOS_LICENSE' <<'END_OF_FILE'
  315. X*******************************************************************************
  316. X* 
  317. X* 
  318. X*          VEOS 2.0 Copyright (C) 1992 Geoffrey P. Coco,
  319. X*              Human Interface Technology Laboratory
  320. X* 
  321. X* 
  322. X* Permission to use, copy, or modify these programs and their documentation
  323. X* without fee for educational and research purposes only is hereby granted,
  324. X* provided that this copyright notice appears on all copies and supporting
  325. X* documentation.  For any other uses of this software, in original or modified
  326. X* form, including but not limited to distribution in whole or in part, specific
  327. X* prior permission must be obtained from HITL.  These programs shall not be
  328. X* used, rewritten, or adapted as the basis of a commercial software or hardware
  329. X* product without first obtaining appropriate licenses from HITL.  HITL makes no
  330. X* representations about the suitability of this software for any purpose.  It is
  331. X* provided "as is" without express or implied warranty.
  332. X* 
  333. X* HITL AND GEOFFREY COCO DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  334. X* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
  335. X* SHALL HITL NOR GEOFFREY COCO BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  336. X* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  337. X* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  338. X* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  339. X* OF THIS SOFTWARE.
  340. X* 
  341. X* 
  342. X* Questions about this software should be addressed to:                 
  343. X*                                             
  344. X*     Software Support                                
  345. X*      Human Interface Technology Laboratory                        
  346. X*       FJ-15, University of Washington                            
  347. X*       Seattle, Washington     98195    USA                        
  348. X*                                             
  349. X* or via email:                                    
  350. X*                                             
  351. X*       veos-support@hitl.washington.edu                        
  352. X*
  353. X*******************************************************************************
  354. END_OF_FILE
  355. if test 1853 -ne `wc -c <'VEOS_LICENSE'`; then
  356.     echo shar: \"'VEOS_LICENSE'\" unpacked with wrong size!
  357. fi
  358. # end of 'VEOS_LICENSE'
  359. fi
  360. if test ! -d 'bin' ; then
  361.     echo shar: Creating directory \"'bin'\"
  362.     mkdir 'bin'
  363. fi
  364. if test ! -d 'docs' ; then
  365.     echo shar: Creating directory \"'docs'\"
  366.     mkdir 'docs'
  367. fi
  368. if test ! -d 'kernel_private' ; then
  369.     echo shar: Creating directory \"'kernel_private'\"
  370.     mkdir 'kernel_private'
  371. fi
  372. if test ! -d 'kernel_private/bin' ; then
  373.     echo shar: Creating directory \"'kernel_private/bin'\"
  374.     mkdir 'kernel_private/bin'
  375. fi
  376. if test ! -d 'kernel_private/lib' ; then
  377.     echo shar: Creating directory \"'kernel_private/lib'\"
  378.     mkdir 'kernel_private/lib'
  379. fi
  380. if test ! -d 'kernel_private/src' ; then
  381.     echo shar: Creating directory \"'kernel_private/src'\"
  382.     mkdir 'kernel_private/src'
  383. fi
  384. if test ! -d 'kernel_private/src/fern' ; then
  385.     echo shar: Creating directory \"'kernel_private/src/fern'\"
  386.     mkdir 'kernel_private/src/fern'
  387. fi
  388. if test -f 'kernel_private/src/fern/fcon.lsp' -a "${1}" != "-c" ; then 
  389.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/fcon.lsp'\"
  390. else
  391. echo shar: Extracting \"'kernel_private/src/fern/fcon.lsp'\" \(2705 characters\)
  392. sed "s/^X//" >'kernel_private/src/fern/fcon.lsp' <<'END_OF_FILE'
  393. X;;-----------------------------------------------------------
  394. X;; file: fcon.lsp
  395. X;;
  396. X;; FERN is the Fractal Entity Relativity Node.
  397. X;; This file is the control flow compenent of the Fern System.
  398. X;;
  399. X;; creation: February 28, 1992
  400. X;;
  401. X;; by Geoffrey P. Coco at the HITLab, Seattle
  402. X;;-----------------------------------------------------------
  403. X
  404. X;;-----------------------------------------------------------
  405. X;; Copyright (C) 1992  Geoffrey P. Coco,
  406. X;; Human Interface Technology Lab, Seattle
  407. X;;-----------------------------------------------------------
  408. X
  409. X
  410. X;;-----------------------------------------------------------
  411. X#|
  412. X
  413. XThese functions manage fern-entity lisp code flow.  They
  414. Xcompose the program control component of the Fern System and
  415. Xare collectively termed FCON.
  416. X
  417. XPrimarily, the FCON handles local behavior code management.
  418. X
  419. X|#
  420. X;;-----------------------------------------------------------
  421. X
  422. X
  423. X
  424. X;;-----------------------------------------------------------
  425. X;;            FCON Public Functions
  426. X;;-----------------------------------------------------------
  427. X
  428. X
  429. X;; pass "name" and '(function-call with args)
  430. X(defun fcon-add-react-proc (proc-name func)
  431. X  (progn
  432. X    (fcon-delete-react-proc proc-name)
  433. X    (setf react-procs (append react-procs (list (list proc-name func))))
  434. X    ))
  435. X
  436. X;; pass "name" and '(function-call with args)
  437. X(defun fcon-add-persist-proc (proc-name func)
  438. X  (progn
  439. X    (fcon-delete-persist-proc proc-name)
  440. X    (setf persist-procs (append persist-procs (list (list proc-name func))))
  441. X    ))
  442. X  
  443. X;; pass name
  444. X(defun fcon-delete-react-proc (proc-name)
  445. X  (setq react-procs
  446. X    (delete proc-name react-procs :test (lambda (x y) (equal x (car y))))))
  447. X
  448. X;; pass name
  449. X(defun fcon-delete-persist-proc (proc-name)
  450. X  (setq persist-procs
  451. X    (delete proc-name persist-procs :test (lambda (x y) (equal x (car y))))))
  452. X
  453. X;;-----------------------------------------------------------
  454. X
  455. X(defun fcon-ungo (uid)
  456. X  (vthrow (list uid) (list 'fcon-local-ungo)))
  457. X
  458. X;;-----------------------------------------------------------
  459. X
  460. X
  461. X
  462. X;;-----------------------------------------------------------
  463. X;;           FCON private functions
  464. X;;-----------------------------------------------------------
  465. X
  466. X
  467. X;;-----------------------------------------------------------
  468. X
  469. X(defun fcon-init ()
  470. X  (progn
  471. X    (setq persist-procs ()
  472. X      react-procs ())
  473. X    t))
  474. X
  475. X;;-----------------------------------------------------------
  476. X
  477. X(defun fcon-persist ()
  478. X  (progn
  479. X    ;; update physical boundary from hardware
  480. X    (fph-perceive)
  481. X
  482. X    ;; do actual persisting
  483. X    (do-procs persist-procs)
  484. X
  485. X    ;; update hardware from physical boundary
  486. X    (fph-exude)
  487. X    ))
  488. X
  489. X(defun fcon-react ()
  490. X  (do-procs react-procs))
  491. X
  492. X;;-----------------------------------------------------------
  493. X
  494. X
  495. X
  496. END_OF_FILE
  497. if test 2705 -ne `wc -c <'kernel_private/src/fern/fcon.lsp'`; then
  498.     echo shar: \"'kernel_private/src/fern/fcon.lsp'\" unpacked with wrong size!
  499. fi
  500. # end of 'kernel_private/src/fern/fcon.lsp'
  501. fi
  502. if test -f 'kernel_private/src/fern/fe.lsp' -a "${1}" != "-c" ; then 
  503.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/fe.lsp'\"
  504. else
  505. echo shar: Extracting \"'kernel_private/src/fern/fe.lsp'\" \(3080 characters\)
  506. sed "s/^X//" >'kernel_private/src/fern/fe.lsp' <<'END_OF_FILE'
  507. X;;-----------------------------------------------------------
  508. X;; file: fe.lsp
  509. X;;
  510. X;; FERN is the Fractal Entity Relativity Node.
  511. X;; This file is the entity component of the Fern System.
  512. X;;
  513. X;; creation: February 28, 1992
  514. X;;
  515. X;; by Geoffrey P. Coco at the HITLab, Seattle
  516. X;;-----------------------------------------------------------
  517. X
  518. X;;-----------------------------------------------------------
  519. X;; Copyright (C) 1992  Geoffrey P. Coco,
  520. X;; Human Interface Technology Lab, Seattle
  521. X;;-----------------------------------------------------------
  522. X
  523. X;;-----------------------------------------------------------
  524. X#|
  525. X
  526. XThese functions perform all local database operations are
  527. Xcollectively termed the FE.
  528. X
  529. XThe FE maintains the "perc" grouplspace partition.  That is,
  530. Xall data associated with the Fern System is passed through
  531. Xthese functions to the grouplespace.
  532. X
  533. XInternally, the Fern System uses these functions exclusively.
  534. XAnd, in the interest of forward compatibility, Fern
  535. Xprogrammers are highly encouraged to use these functions
  536. Xexclusively to access Fern's "perc" grouplespace partition.
  537. X
  538. X|#
  539. X;;-----------------------------------------------------------
  540. X
  541. X
  542. X
  543. X;;-----------------------------------------------------------
  544. X;;            Load FE Subcomponents
  545. X;;-----------------------------------------------------------
  546. X
  547. X(load "fe_ext")
  548. X(load "fe_bnd")
  549. X(load "fe_int")
  550. X(load "fe_locl")
  551. X
  552. X;;-----------------------------------------------------------
  553. X
  554. X
  555. X
  556. X
  557. X;;===========================================================
  558. X;;
  559. X;;            FE PRIVATE FUNCTIONS
  560. X;;
  561. X;;===========================================================
  562. X
  563. X
  564. X;;-----------------------------------------------------------
  565. X#|
  566. Xall FE functions assume that the partitions are setup like
  567. Xthis.  That is, for any FE functions to work properly, the
  568. X"perc" partition must be fully articulated. 
  569. X
  570. XA full "perc" partition contains the three subpartitions:
  571. X"external", "boundary", "internal".  Furthermore, those
  572. Xsubpartitions must contain their respective sub-partitions.
  573. X
  574. XAn empty but articulated perception partition looks like:
  575. X
  576. X("perc"
  577. X
  578. X (;external
  579. X  ()      ;spaces
  580. X  ()      ;siblings
  581. X  ()      ;filters
  582. X  )
  583. X
  584. X (;boundary
  585. X  ()      ;virtual
  586. X  ()      ;physical
  587. X  )
  588. X
  589. X (;internal
  590. X  ()      ;local
  591. X  ()      ;sublings
  592. X  ()      ;filters
  593. X  )
  594. X
  595. X )
  596. X
  597. X|#
  598. X
  599. X(defun fe-init ()
  600. X  (progn
  601. X    ;; setup the "perception" grouplespace partition.
  602. X    (put-gspace-partition '("perc"
  603. X                ()      ;; external
  604. X                ()      ;; boundary
  605. X                ()      ;; internal
  606. X                ))
  607. X
  608. X    ;; setup "external" sub-partitions.
  609. X    (fe-put.ext '(()     ;; current spaces.
  610. X          ()     ;; siblings among all spaces.
  611. X          ()     ;; perceptual filters.
  612. X          ))
  613. X
  614. X    ;; setup "boundary" sub-partitions.
  615. X    (fe-put.bndry (list self  ;; self uid.
  616. X            ()    ;; virtual object-list.
  617. X            ()    ;; physical object-list.
  618. X            ))
  619. X
  620. X    ;; setup "internal" sub-partitions.
  621. X    (fe-put.int '(()     ;; local memory
  622. X          ()     ;; the space for the entity's internal world
  623. X          ()     ;; the filters for each contained entity
  624. X          ))
  625. X    ))
  626. X
  627. X;;-----------------------------------------------------------
  628. END_OF_FILE
  629. if test 3080 -ne `wc -c <'kernel_private/src/fern/fe.lsp'`; then
  630.     echo shar: \"'kernel_private/src/fern/fe.lsp'\" unpacked with wrong size!
  631. fi
  632. # end of 'kernel_private/src/fern/fe.lsp'
  633. fi
  634. if test -f 'kernel_private/src/fern/fe_locl.lsp' -a "${1}" != "-c" ; then 
  635.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/fe_locl.lsp'\"
  636. else
  637. echo shar: Extracting \"'kernel_private/src/fern/fe_locl.lsp'\" \(2295 characters\)
  638. sed "s/^X//" >'kernel_private/src/fern/fe_locl.lsp' <<'END_OF_FILE'
  639. X;
  640. X; local.lsp
  641. X;
  642. X; Copyright (C) 1992  Washington Technology Center
  643. X;
  644. X; by Andrew MacDonald at the HITLab
  645. X;
  646. X; object caching in the local workspace
  647. X;
  648. X; this is based on fe_bnd.lsp and fe_int.lsp, and manipulates objects
  649. X; in perc.int.locl 
  650. X;
  651. X; functions are of the form fe-(put|get|copy).int.locl.(accessors),
  652. X; with macros of the form lo-(put|get|copy).(accessors) defined
  653. X; for each function
  654. X;
  655. X;;-----------------------------------------------------------
  656. X;; file: fe.lsp
  657. X;; by Geoffrey P. Coco at the HITLab, Seattle
  658. X;;-----------------------------------------------------------
  659. X
  660. X;;-----------------------------------------------------------
  661. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  662. X;;-----------------------------------------------------------
  663. X
  664. X
  665. X;;===========================================================
  666. X;;         Show Local Object Space
  667. X;;===========================================================
  668. X
  669. X(defun lo-dump ()
  670. X  (pprint (fe-copy.int.locl)))
  671. X
  672. X(defun lo-empty ()
  673. X  (pprint (fe-xtrct.int.locl)))
  674. X
  675. X;;===========================================================
  676. X;;         Macro Shortcuts
  677. X;;===========================================================
  678. X
  679. X(defmacro lo-jam-ob (ob)
  680. X  `(fe-jam.int.locl.ob ,ob))
  681. X
  682. X(defmacro lo-put-ob (ob)
  683. X  `(fe-put.int.locl.ob ,ob))
  684. X
  685. X(defmacro lo-copy-ob (ob-name)
  686. X  `(fe-copy.int.locl.ob ,ob-name))
  687. X
  688. X(defmacro lo-get-ob (ob-name)
  689. X  `(fe-get.int.locl.ob ,ob-name))
  690. X
  691. X;----------------------------------------------------------------
  692. X
  693. X(defmacro lo-copy-ob-names ()
  694. X  '(fe-copy.int.locl.ob.names))
  695. X
  696. X;----------------------------------------------------------------
  697. X
  698. X(defmacro lo-jab-attr (ob-name attr)
  699. X  `(fe-jam.int.locl.ob.attr ,ob-name ,attr))
  700. X
  701. X(defmacro lo-put-attr (ob-name attr)
  702. X  `(fe-put.int.locl.ob.attr ,ob-name ,attr))
  703. X
  704. X;----------------------------------------------------------------
  705. X
  706. X(defmacro lo-get-attr (ob-name attr-name)
  707. X  `(fe-get.int.locl.ob.attr ,ob-name ,attr-name))
  708. X
  709. X;----------------------------------------------------------------
  710. X
  711. X(defmacro lo-copy-attr (ob-name attr-name)
  712. X  `(fe-copy.int.locl.ob.attr ,ob-name ,attr-name))
  713. X
  714. X(defmacro lo-copy-attr-names (ob-name)
  715. X  `(fe-copy.int.locl.ob.attr.names ,ob-name))
  716. X
  717. X(defmacro lo-copy-attr-val (ob-name attr-name)
  718. X  `(fe-copy.int.locl.ob.attr.val ,ob-name ,attr-name))
  719. X
  720. END_OF_FILE
  721. if test 2295 -ne `wc -c <'kernel_private/src/fern/fe_locl.lsp'`; then
  722.     echo shar: \"'kernel_private/src/fern/fe_locl.lsp'\" unpacked with wrong size!
  723. fi
  724. # end of 'kernel_private/src/fern/fe_locl.lsp'
  725. fi
  726. if test -f 'kernel_private/src/fern/fph.lsp' -a "${1}" != "-c" ; then 
  727.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/fph.lsp'\"
  728. else
  729. echo shar: Extracting \"'kernel_private/src/fern/fph.lsp'\" \(2467 characters\)
  730. sed "s/^X//" >'kernel_private/src/fern/fph.lsp' <<'END_OF_FILE'
  731. X;;-----------------------------------------------------------
  732. X;; file: fph.lsp
  733. X;;
  734. X;; FERN is the Fractal Entity Relativity Node.
  735. X;; This file is the FPH compenent of the Fern System.
  736. X;;
  737. X;; creation: March 28, 1992
  738. X;;
  739. X;; by Geoffrey P. Coco at the HITLab, Seattle
  740. X;;-----------------------------------------------------------
  741. X
  742. X;;-----------------------------------------------------------
  743. X;; Copyright (C) 1992  Geoffrey P. Coco,
  744. X;; Human Interface Technology Lab, Seattle
  745. X;;-----------------------------------------------------------
  746. X
  747. X
  748. X;;-----------------------------------------------------------
  749. X#|
  750. X
  751. XThese functions provide users of the Fern System with a
  752. Xstandardized mechanism for coupling hardware-specific
  753. Xinterface code to objects in the 'physical' boundary.  They
  754. Xrepresent the FPH component of the Fern System.
  755. X
  756. X|#
  757. X;;-----------------------------------------------------------
  758. X
  759. X
  760. X;;===========================================================
  761. X;;
  762. X;;             FPH PUBLIC FUNCTIONS
  763. X;;
  764. X;;===========================================================
  765. X
  766. X;; pass "name" and '(function-call with args)
  767. X(defun fph-add-input-proc (proc-name func)
  768. X  (progn
  769. X    (fph-delete-input-proc proc-name)
  770. X    (setf pre-persist-procs (append pre-persist-procs (list (list proc-name func))))
  771. X    ))
  772. X
  773. X;; pass "name" and '(function-call with args)
  774. X(defun fph-add-output-proc (proc-name func)
  775. X  (progn
  776. X    (fph-delete-output-proc proc-name)
  777. X    (setf post-persist-procs (append post-persist-procs (list (list proc-name func))))
  778. X    ))
  779. X  
  780. X;; pass name
  781. X(defun fph-delete-input-proc (proc-name)
  782. X  (setq pre-persist-procs
  783. X    (delete proc-name pre-persist-procs :test (lambda (x y) (equal x (car y))))))
  784. X
  785. X;; pass name
  786. X(defun fph-delete-output-proc (proc-name)
  787. X  (setq post-persist-procs
  788. X    (delete proc-name post-persist-procs :test (lambda (x y) (equal x (car y))))))
  789. X
  790. X
  791. X;;===========================================================
  792. X;;
  793. X;;             FPH PRIVATE FUNCTIONS
  794. X;;
  795. X;;===========================================================
  796. X
  797. X
  798. X;;-----------------------------------------------------------
  799. X
  800. X(defun fph-init ()
  801. X  (setq pre-persist-procs ()
  802. X    post-persist-procs ())
  803. X  )
  804. X
  805. X;;-----------------------------------------------------------
  806. X
  807. X;; update physical boundary from hardware
  808. X(defun fph-perceive ()
  809. X  (do-procs pre-persist-procs)
  810. X  )
  811. X
  812. X;; update hardware from physical boundary
  813. X(defun fph-exude ()
  814. X  (do-procs post-persist-procs)
  815. X  )
  816. X;;-----------------------------------------------------------
  817. X
  818. X
  819. X
  820. END_OF_FILE
  821. if test 2467 -ne `wc -c <'kernel_private/src/fern/fph.lsp'`; then
  822.     echo shar: \"'kernel_private/src/fern/fph.lsp'\" unpacked with wrong size!
  823. fi
  824. # end of 'kernel_private/src/fern/fph.lsp'
  825. fi
  826. if test -f 'kernel_private/src/fern/load_bal.lsp' -a "${1}" != "-c" ; then 
  827.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/load_bal.lsp'\"
  828. else
  829. echo shar: Extracting \"'kernel_private/src/fern/load_bal.lsp'\" \(2025 characters\)
  830. sed "s/^X//" >'kernel_private/src/fern/load_bal.lsp' <<'END_OF_FILE'
  831. X;;-----------------------------------------------------------
  832. X;; file: fbal.lsp
  833. X;;
  834. X;; FERN is the Fractal Entity Relativity Node.
  835. X;; This file is the Load Balancing module of the Fern System.
  836. X;;
  837. X;; creation: February 28, 1992
  838. X;;
  839. X;; by Geoffrey P. Coco at the HITLab, Seattle
  840. X;;-----------------------------------------------------------
  841. X
  842. X;;-----------------------------------------------------------
  843. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  844. X;;-----------------------------------------------------------
  845. X
  846. X
  847. X;;-----------------------------------------------------------
  848. X#|
  849. X
  850. XThese functions provide transparent load-balancing for Fern
  851. XEntities and compose the Load Balancing (or FBAL) component
  852. Xof the Fern System.
  853. X
  854. XThe FBAL component ensures that the various computational
  855. Xrequirements of a running scenario are evenly distributed
  856. Xacross the local area network workstations.
  857. X
  858. XSimply, entity computational requirements are rated with a
  859. Xscalar, as are hardware capabilities.  Also important are the
  860. Xhardware peripheral requirements an entity.
  861. X
  862. XThese factors are rules for inferencing on which local
  863. Xnetwork host to place the next entity.  The one local-area
  864. XFBAL entity (the universe, by convention) maintains the
  865. Xdynamic database of network-node/entity-load information.
  866. X
  867. XNo dynamic balancing is projected (i.e. migrating entities).
  868. X
  869. X|#
  870. X;;-----------------------------------------------------------
  871. X
  872. X
  873. X
  874. X;;-----------------------------------------------------------
  875. X;;           FBAL Private Functions
  876. X;;-----------------------------------------------------------
  877. X
  878. X(define fbal-init ()
  879. X  (progn
  880. X    (vget '(> ("balance" @@) **))
  881. X    (vput '("balance" () ()) '(^ @@))
  882. X    
  883. X    ))
  884. X
  885. X
  886. X(defun fbal-make-node (binary program)
  887. X  (vthrow (list universe) `(fbal-remote-new-make-node binary
  888. X                              program
  889. X                              ,self))
  890. X  )
  891. X
  892. X
  893. X(defun fbal-remote-make-node (binary program ancestor)
  894. X  (fcon-make-node (fbal-avail-host binary program) binary program ancestor)
  895. X  )
  896. X
  897. X
  898. X(defun fbal-avail-host (binary program)
  899. X  
  900. X  )
  901. X
  902. X
  903. X
  904. X
  905. END_OF_FILE
  906. if test 2025 -ne `wc -c <'kernel_private/src/fern/load_bal.lsp'`; then
  907.     echo shar: \"'kernel_private/src/fern/load_bal.lsp'\" unpacked with wrong size!
  908. fi
  909. # end of 'kernel_private/src/fern/load_bal.lsp'
  910. fi
  911. if test -f 'kernel_private/src/fern/zoot.lsp' -a "${1}" != "-c" ; then 
  912.   echo shar: Will not clobber existing file \"'kernel_private/src/fern/zoot.lsp'\"
  913. else
  914. echo shar: Extracting \"'kernel_private/src/fern/zoot.lsp'\" \(333 characters\)
  915. sed "s/^X//" >'kernel_private/src/fern/zoot.lsp' <<'END_OF_FILE'
  916. X(read-time)
  917. X(do ((i 0))
  918. X    ((> i 10000) t)
  919. X
  920. X    (let* ((a (+ 1 2))
  921. X       (b (+ a 1)))
  922. X
  923. X      (+ a b))
  924. X    (setq i (1+ i))
  925. X    )
  926. X(printf "time after let loop: " (read-time))
  927. X
  928. X(do ((i 0))
  929. X    ((> i 10000) t)
  930. X
  931. X    (setq a (+ 1 2))
  932. X    (setq b (+ a 1))
  933. X    (+ a b)
  934. X    (setq i (1+ i))
  935. X    )
  936. X
  937. X(printf "time after setq loop: " (read-time))
  938. END_OF_FILE
  939. if test 333 -ne `wc -c <'kernel_private/src/fern/zoot.lsp'`; then
  940.     echo shar: \"'kernel_private/src/fern/zoot.lsp'\" unpacked with wrong size!
  941. fi
  942. # end of 'kernel_private/src/fern/zoot.lsp'
  943. fi
  944. if test ! -d 'kernel_private/src/include' ; then
  945.     echo shar: Creating directory \"'kernel_private/src/include'\"
  946.     mkdir 'kernel_private/src/include'
  947. fi
  948. if test -f 'kernel_private/src/include/fern.h' -a "${1}" != "-c" ; then 
  949.   echo shar: Will not clobber existing file \"'kernel_private/src/include/fern.h'\"
  950. else
  951. echo shar: Extracting \"'kernel_private/src/include/fern.h'\" \(1899 characters\)
  952. sed "s/^X//" >'kernel_private/src/include/fern.h' <<'END_OF_FILE'
  953. X/****************************************************************************************
  954. X * file: fern.h                                        *
  955. X *                                            *
  956. X * February 25, 1992: implementation of the Fractal Entity Relativity Node for veos.    *
  957. X *                                                    *
  958. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  959. X *                                            *
  960. X ****************************************************************************************/
  961. X
  962. X/****************************************************************************************
  963. X * Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  964. X ****************************************************************************************/
  965. X
  966. X
  967. X/*--------------------------------------------------------------------------------*
  968. X                  Useful Externs
  969. X *--------------------------------------------------------------------------------*/
  970. X
  971. Xextern LVAL xsendmsg0();
  972. Xextern LVAL s_unbound;
  973. Xextern LVAL true;
  974. Xextern LVAL s_stderr;
  975. Xextern LVAL s_quote;
  976. X
  977. Xextern void Native_NextMsg();
  978. X
  979. X/*--------------------------------------------------------------------------------*
  980. X                  Fern Data Structures
  981. X *--------------------------------------------------------------------------------*/
  982. X
  983. Xtypedef struct stmpnode {
  984. X    
  985. X    str63        sHost;
  986. X    int            iPort;
  987. X    float        fData;
  988. X    struct stmpnode    *pNext;
  989. X
  990. X    } TStampEntRec,
  991. X      *TPStampEntRec,
  992. X      **THStampEntRec;
  993. X
  994. Xtypedef TPStampEntRec    TStampEntHash[13];
  995. X
  996. X/*--------------------------------------------------------------------------------*
  997. X                    Defines
  998. X *--------------------------------------------------------------------------------*/
  999. X
  1000. X#define FBASE_HASH_HOST(sHost) ((sHost[0] - 'a') / 2)
  1001. X#define FBASE_HASH_HIT(pXVect, pFNode) \
  1002. X(getfixnum(getelement(pXVect, 1)) == (pFNode)->iPort && \
  1003. X strcmp(getstring(getelement(pXVect, 0)), (pFNode)->sHost) == 0)
  1004. X
  1005. X/*--------------------------------------------------------------------------------*/
  1006. END_OF_FILE
  1007. if test 1899 -ne `wc -c <'kernel_private/src/include/fern.h'`; then
  1008.     echo shar: \"'kernel_private/src/include/fern.h'\" unpacked with wrong size!
  1009. fi
  1010. # end of 'kernel_private/src/include/fern.h'
  1011. fi
  1012. if test -f 'kernel_private/src/include/fern_prims.h' -a "${1}" != "-c" ; then 
  1013.   echo shar: Will not clobber existing file \"'kernel_private/src/include/fern_prims.h'\"
  1014. else
  1015. echo shar: Extracting \"'kernel_private/src/include/fern_prims.h'\" \(1892 characters\)
  1016. sed "s/^X//" >'kernel_private/src/include/fern_prims.h' <<'END_OF_FILE'
  1017. X/****************************************************************************************
  1018. X * file: fern_prims.h                                    *
  1019. X *                                            *
  1020. X * February 25, 1992: implementation of the Fractal Entity Relativity Node for veos.    *
  1021. X *                                                    *
  1022. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  1023. X *                                            *
  1024. X ****************************************************************************************/
  1025. X
  1026. X/****************************************************************************************
  1027. X * Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  1028. X ****************************************************************************************/
  1029. X
  1030. X
  1031. X/*--------------------------------------------------------------------------------*/
  1032. X
  1033. X#ifdef FERN_LOAD
  1034. X
  1035. XDEFINE_SUBR("FCON-GO", Fbase_fcon_go)
  1036. XDEFINE_SUBR("FCON-LOCAL-UNGO", Fbase_fcon_local_ungo)
  1037. XDEFINE_SUBR("FCON-TIME", Fbase_fcon_time)
  1038. XDEFINE_SUBR("FBASE-INIT", Fbase_Init)
  1039. XDEFINE_SUBR("FBASE-NEW-HTAB", Fbase_Hash_NewTab)
  1040. XDEFINE_SUBR("FBASE-PUT-HASH", Fbase_Hash_AddUid)
  1041. XDEFINE_SUBR("FBASE-GET-HASH", Fbase_Hash_RemoveUid)
  1042. XDEFINE_SUBR("FBASE-HASH", Fbase_Hash_HashUid)
  1043. XDEFINE_SUBR("FE-COPY.INT.SUBS", Fbase_CopyIntSubs)
  1044. XDEFINE_SUBR("FBASE-INIT-COPY.INT.SUBS", Fbase_Init_CopyIntSubs)
  1045. XDEFINE_SUBR("FE-COPY.BNDRY.VRT", Fbase_CopyBndryVrt)
  1046. XDEFINE_SUBR("FBASE-INIT-COPY.BNDRY.VRT", Fbase_Init_CopyBndryVrt)
  1047. X
  1048. X#endif
  1049. X
  1050. X
  1051. X#ifdef FERN_DEFS
  1052. X
  1053. Xextern LVAL Fbase_fcon_go();
  1054. Xextern LVAL Fbase_fcon_local_ungo();
  1055. Xextern LVAL Fbase_fcon_time();
  1056. Xextern LVAL Fbase_Init();
  1057. Xextern LVAL Fbase_Hash_NewTab();
  1058. Xextern LVAL Fbase_Hash_AddUid();
  1059. Xextern LVAL Fbase_Hash_RemoveUid();
  1060. Xextern LVAL Fbase_Hash_HashUid();
  1061. Xextern LVAL Fbase_CopyIntSubs();
  1062. Xextern LVAL Fbase_CopyBndryVrt();
  1063. Xextern LVAL Fbase_Init_CopyIntSubs();
  1064. Xextern LVAL Fbase_Init_CopyBndryVrt();
  1065. X
  1066. X#endif
  1067. X
  1068. X/*--------------------------------------------------------------------------------*/
  1069. END_OF_FILE
  1070. if test 1892 -ne `wc -c <'kernel_private/src/include/fern_prims.h'`; then
  1071.     echo shar: \"'kernel_private/src/include/fern_prims.h'\" unpacked with wrong size!
  1072. fi
  1073. # end of 'kernel_private/src/include/fern_prims.h'
  1074. fi
  1075. if test -f 'kernel_private/src/include/xv_native_prims.h' -a "${1}" != "-c" ; then 
  1076.   echo shar: Will not clobber existing file \"'kernel_private/src/include/xv_native_prims.h'\"
  1077. else
  1078. echo shar: Extracting \"'kernel_private/src/include/xv_native_prims.h'\" \(1763 characters\)
  1079. sed "s/^X//" >'kernel_private/src/include/xv_native_prims.h' <<'END_OF_FILE'
  1080. X/****************************************************************************************
  1081. X *                                            *
  1082. X * file: xv_native_prims.h                                *
  1083. X *                                            *
  1084. X * the xlisp include file for integration with VEOS native prims.            *
  1085. X *                                            *
  1086. X * creation: December, 1991                                *
  1087. X *                                            *
  1088. X *                                            *
  1089. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  1090. X *                                            *
  1091. X ****************************************************************************************/
  1092. X
  1093. X/****************************************************************************************
  1094. X * Copyright (C) 1992  Geoffrey P. Coco, Human Interface Technology Lab, Seattle    *
  1095. X ****************************************************************************************/
  1096. X
  1097. X
  1098. X
  1099. X/****************************************************************************************/
  1100. X
  1101. X#ifdef VEOS_NATIVE_LOAD
  1102. X
  1103. XDEFINE_SUBR("VPUT", Native_Put  )
  1104. XDEFINE_SUBR("VGET", Native_Get  )
  1105. XDEFINE_SUBR("VCOPY", Native_Copy )
  1106. XDEFINE_SUBR("VINIT", Native_Init )
  1107. XDEFINE_SUBR("VCLOSE", Native_Close )
  1108. XDEFINE_SUBR("VTASK", Native_Task )
  1109. XDEFINE_SUBR("VTHROW", Native_Throw )
  1110. XDEFINE_SUBR("VCATCH", Native_Catch )
  1111. XDEFINE_SUBR("VNOSIGNALS", Native_NoSignals )
  1112. XDEFINE_SUBR("VBUGS", Native_Bugs )
  1113. XDEFINE_SUBR("VZOOT", Native_Zoot )
  1114. XDEFINE_SUBR("VMINTIME", Native_MinTime )
  1115. X
  1116. X#endif
  1117. X
  1118. X
  1119. X#ifdef VEOS_NATIVE_DEFS
  1120. X
  1121. Xextern LVAL Native_Put();
  1122. Xextern LVAL Native_Get();
  1123. Xextern LVAL Native_Copy();
  1124. Xextern LVAL Native_Init();
  1125. Xextern LVAL Native_Close();
  1126. Xextern LVAL Native_Task();
  1127. Xextern LVAL Native_Throw();
  1128. Xextern LVAL Native_Catch();
  1129. Xextern LVAL Native_NoSignals();
  1130. Xextern LVAL Native_Bugs();
  1131. Xextern LVAL Native_Zoot();
  1132. Xextern LVAL Native_MinTime();
  1133. X
  1134. X#endif
  1135. X
  1136. X/****************************************************************************************/
  1137. END_OF_FILE
  1138. if test 1763 -ne `wc -c <'kernel_private/src/include/xv_native_prims.h'`; then
  1139.     echo shar: \"'kernel_private/src/include/xv_native_prims.h'\" unpacked with wrong size!
  1140. fi
  1141. # end of 'kernel_private/src/include/xv_native_prims.h'
  1142. fi
  1143. if test ! -d 'kernel_private/src/nancy' ; then
  1144.     echo shar: Creating directory \"'kernel_private/src/nancy'\"
  1145.     mkdir 'kernel_private/src/nancy'
  1146. fi
  1147. if test ! -d 'kernel_private/src/shell' ; then
  1148.     echo shar: Creating directory \"'kernel_private/src/shell'\"
  1149.     mkdir 'kernel_private/src/shell'
  1150. fi
  1151. if test -f 'kernel_private/src/shell/main.c' -a "${1}" != "-c" ; then 
  1152.   echo shar: Will not clobber existing file \"'kernel_private/src/shell/main.c'\"
  1153. else
  1154. echo shar: Extracting \"'kernel_private/src/shell/main.c'\" \(1899 characters\)
  1155. sed "s/^X//" >'kernel_private/src/shell/main.c' <<'END_OF_FILE'
  1156. X/****************************************************************************************
  1157. X *                                            *
  1158. X * file: main.c                                        *
  1159. X *                                            *
  1160. X * An example controlling of veos using xlisp interface.                *
  1161. X *                                            *
  1162. X * creation: December, 1991                                *
  1163. X *                                            *
  1164. X *                                            *
  1165. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  1166. X *                                            *
  1167. X ****************************************************************************************/
  1168. X
  1169. X/****************************************************************************************
  1170. X * Copyright (C) 1992  Geoffrey P. Coco, Human Interface Technology Lab, Seattle    *
  1171. X ****************************************************************************************/
  1172. X
  1173. X
  1174. X#include "world.h"
  1175. X
  1176. Xextern xmain();
  1177. X
  1178. X
  1179. X/****************************************************************************************
  1180. X * main
  1181. X * launchpad of any stand-alone program
  1182. X ****************************************************************************************/
  1183. Xmain(argc, argv)
  1184. X    int        argc;
  1185. X    char    *argv[];
  1186. X{
  1187. X    /** call the xlisp controller, never returns **/
  1188. X    xmain(argc, argv);
  1189. X    }
  1190. X
  1191. X
  1192. X/****************************************************************************************
  1193. X * xlinclude_hybrid_prims
  1194. X * lisp calls this function to load user-defined lisp primitives
  1195. X ****************************************************************************************/
  1196. Xxlinclude_hybrid_prims()
  1197. X{
  1198. X    /** load veos native lisp primitive entries **/
  1199. X    Shell_LoadNativePrims();
  1200. X    Fern_LoadPrims();
  1201. X    XVUtils_LoadPrims();
  1202. X    }
  1203. X
  1204. X
  1205. X
  1206. X/****************************************************************************************
  1207. X * xlshutdown_hybrid
  1208. X * lisp calls this function before graceful exit
  1209. X ****************************************************************************************/
  1210. Xxlshutdown_hybrid()
  1211. X{
  1212. X    /** let the kernel unwind **/
  1213. X    Kernel_Shutdown();
  1214. X    }
  1215. X
  1216. X
  1217. X
  1218. X
  1219. END_OF_FILE
  1220. if test 1899 -ne `wc -c <'kernel_private/src/shell/main.c'`; then
  1221.     echo shar: \"'kernel_private/src/shell/main.c'\" unpacked with wrong size!
  1222. fi
  1223. # end of 'kernel_private/src/shell/main.c'
  1224. fi
  1225. if test ! -d 'kernel_private/src/talk' ; then
  1226.     echo shar: Creating directory \"'kernel_private/src/talk'\"
  1227.     mkdir 'kernel_private/src/talk'
  1228. fi
  1229. if test ! -d 'lib' ; then
  1230.     echo shar: Creating directory \"'lib'\"
  1231.     mkdir 'lib'
  1232. fi
  1233. if test ! -d 'lisp' ; then
  1234.     echo shar: Creating directory \"'lisp'\"
  1235.     mkdir 'lisp'
  1236. fi
  1237. if test -f 'lisp/ancestor-maker.lsp' -a "${1}" != "-c" ; then 
  1238.   echo shar: Will not clobber existing file \"'lisp/ancestor-maker.lsp'\"
  1239. else
  1240. echo shar: Extracting \"'lisp/ancestor-maker.lsp'\" \(1300 characters\)
  1241. sed "s/^X//" >'lisp/ancestor-maker.lsp' <<'END_OF_FILE'
  1242. X;;-----------------------------------------------------------
  1243. X;; file: fern.lsp
  1244. X;;
  1245. X;; FERN is the Fractal Entity Relativity Node.
  1246. X;; This file builds the 'ancestor files' used by FERN
  1247. X;; when creating new a new entity.
  1248. X;; see functions fgod-make-node and fgod-be-node for details
  1249. X;;
  1250. X;; creation: February 28, 1992
  1251. X;;
  1252. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1253. X;;-----------------------------------------------------------
  1254. X
  1255. X;;-----------------------------------------------------------
  1256. X;; Copyright (C) 1992  Geoffrey P. Coco,
  1257. X;; Human Interface Technology Lab, Seattle
  1258. X;;-----------------------------------------------------------
  1259. X
  1260. X(setq hosts
  1261. X      '("bandersnatch"
  1262. X    "callay"
  1263. X    "frabjous"
  1264. X    "vorpal"
  1265. X    "slithy"
  1266. X    "jabberwock"
  1267. X    "brillig"
  1268. X    "hawaii"
  1269. X    "iris2"
  1270. X    "hal"
  1271. X    "passion"
  1272. X    "envy"
  1273. X    "enos"
  1274. X    ))
  1275. X
  1276. X(do ((hosts hosts) fp filename host-name)
  1277. X    ((null hosts))
  1278. X    (setq host-name (car hosts))
  1279. X    
  1280. X    (do ((port 5500))
  1281. X    ((> port 5510))
  1282. X    
  1283. X    (setq file-name (sprintf host-name "_" port ".lsp"))
  1284. X    
  1285. X    (cond ((setq fp (open file-name :direction :output))
  1286. X
  1287. X           ;; actual code generation
  1288. X           (print `(setq fern-ancestor ,(vector host-name port)) fp)
  1289. X           (print `(setq host-xdisplay ,(sprintf host-name ":0.0")) fp)
  1290. X           (close fp)))
  1291. X
  1292. X    (setq port (1+ port))
  1293. X    )
  1294. X    (setq hosts (cdr hosts))
  1295. X    )
  1296. X
  1297. X
  1298. END_OF_FILE
  1299. if test 1300 -ne `wc -c <'lisp/ancestor-maker.lsp'`; then
  1300.     echo shar: \"'lisp/ancestor-maker.lsp'\" unpacked with wrong size!
  1301. fi
  1302. # end of 'lisp/ancestor-maker.lsp'
  1303. fi
  1304. if test ! -d 'lisp/ancestors' ; then
  1305.     echo shar: Creating directory \"'lisp/ancestors'\"
  1306.     mkdir 'lisp/ancestors'
  1307. fi
  1308. if test -f 'lisp/fern.lsp' -a "${1}" != "-c" ; then 
  1309.   echo shar: Will not clobber existing file \"'lisp/fern.lsp'\"
  1310. else
  1311. echo shar: Extracting \"'lisp/fern.lsp'\" \(632 characters\)
  1312. sed "s/^X//" >'lisp/fern.lsp' <<'END_OF_FILE'
  1313. X;;-----------------------------------------------------------
  1314. X;; file: fern.lsp
  1315. X;;
  1316. X;; FERN is the Fractal Entity Relativity Node.
  1317. X;; This file invokes FERN from any directory.
  1318. X;;
  1319. X;; creation: February 28, 1992
  1320. X;;
  1321. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1322. X;;-----------------------------------------------------------
  1323. X
  1324. X;;-----------------------------------------------------------
  1325. X;; Copyright (C) 1992  Geoffrey P. Coco,
  1326. X;; Human Interface Technology Lab, Seattle
  1327. X;;-----------------------------------------------------------
  1328. X
  1329. X
  1330. X(setq load-path "/home/voodoo/veos/src/kernel_current/fern/")
  1331. X(load "fern")
  1332. X(setq load-path NIL)
  1333. X
  1334. X
  1335. X
  1336. END_OF_FILE
  1337. if test 632 -ne `wc -c <'lisp/fern.lsp'`; then
  1338.     echo shar: \"'lisp/fern.lsp'\" unpacked with wrong size!
  1339. fi
  1340. # end of 'lisp/fern.lsp'
  1341. fi
  1342. if test -f 'lisp/file_io.lsp' -a "${1}" != "-c" ; then 
  1343.   echo shar: Will not clobber existing file \"'lisp/file_io.lsp'\"
  1344. else
  1345. echo shar: Extracting \"'lisp/file_io.lsp'\" \(522 characters\)
  1346. sed "s/^X//" >'lisp/file_io.lsp' <<'END_OF_FILE'
  1347. X;; save partition of grouplespace to given file
  1348. X;; specify partition with pattern arg
  1349. X
  1350. X(defun save-gspace (file-name pattern)
  1351. X
  1352. X  (let (fp)
  1353. X    (cond ((setq fp (open file-name :direction :output))
  1354. X
  1355. X       (print (vcopy pattern) fp)
  1356. X       (close fp)
  1357. X       t))))
  1358. X
  1359. X
  1360. X
  1361. X;; load file into partition of grouplespace
  1362. X;; specify partition with pattern arg
  1363. X
  1364. X(defun load-gspace (file-name pattern)
  1365. X
  1366. X  (let (err fp)
  1367. X    (cond ((setq fp (open file-name :direction :input))
  1368. X
  1369. X       (setq err (vput (read fp) pattern))
  1370. X       (close fp)
  1371. X       err))))
  1372. X
  1373. X
  1374. X
  1375. END_OF_FILE
  1376. if test 522 -ne `wc -c <'lisp/file_io.lsp'`; then
  1377.     echo shar: \"'lisp/file_io.lsp'\" unpacked with wrong size!
  1378. fi
  1379. # end of 'lisp/file_io.lsp'
  1380. fi
  1381. if test -f 'lisp/interactive.lsp' -a "${1}" != "-c" ; then 
  1382.   echo shar: Will not clobber existing file \"'lisp/interactive.lsp'\"
  1383. else
  1384. echo shar: Extracting \"'lisp/interactive.lsp'\" \(1284 characters\)
  1385. sed "s/^X//" >'lisp/interactive.lsp' <<'END_OF_FILE'
  1386. X;;-----------------------------------------------------------
  1387. X;; file: interactive.lsp
  1388. X;;
  1389. X;; Start up an autonomous entity
  1390. X;;
  1391. X;; creation: March 11, 1992
  1392. X;;
  1393. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1394. X;;-----------------------------------------------------------
  1395. X
  1396. X;;-----------------------------------------------------------
  1397. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  1398. X;;-----------------------------------------------------------
  1399. X
  1400. X
  1401. X;;-----------------------------------------------------------
  1402. X;;            Module Initialization
  1403. X;;-----------------------------------------------------------
  1404. X
  1405. X
  1406. X;; FERN
  1407. X
  1408. X(load "/home/veos/lisp/fern")
  1409. X
  1410. X
  1411. X
  1412. X;;-----------------------------------------------------------
  1413. X;;               Define Behavior
  1414. X;;-----------------------------------------------------------
  1415. X
  1416. X(defun get-command ()
  1417. X  (progn
  1418. X    (printf1 "\n\nPersist =>> ")
  1419. X    (pprint (eval (read)))
  1420. X    (printf "\n\n")
  1421. X    ))
  1422. X
  1423. X
  1424. X;;-----------------------------------------------------------
  1425. X;;               Instill Behavior
  1426. X;;-----------------------------------------------------------
  1427. X
  1428. X(fcon-add-persist-proc "get-command" '(get-command))
  1429. X
  1430. X
  1431. X;;-----------------------------------------------------------
  1432. X;;                Begin
  1433. X;;-----------------------------------------------------------
  1434. X
  1435. X(fcon-go)
  1436. X
  1437. END_OF_FILE
  1438. if test 1284 -ne `wc -c <'lisp/interactive.lsp'`; then
  1439.     echo shar: \"'lisp/interactive.lsp'\" unpacked with wrong size!
  1440. fi
  1441. # end of 'lisp/interactive.lsp'
  1442. fi
  1443. if test -f 'lisp/tabula_rasa.lsp' -a "${1}" != "-c" ; then 
  1444.   echo shar: Will not clobber existing file \"'lisp/tabula_rasa.lsp'\"
  1445. else
  1446. echo shar: Extracting \"'lisp/tabula_rasa.lsp'\" \(1439 characters\)
  1447. sed "s/^X//" >'lisp/tabula_rasa.lsp' <<'END_OF_FILE'
  1448. X;;-----------------------------------------------------------
  1449. X;; file: tabula_rasa.lsp
  1450. X;;
  1451. X;; Start up an autonomous entity with UM-Engine
  1452. X;;
  1453. X;; creation: March 11, 1992
  1454. X;;
  1455. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1456. X;;-----------------------------------------------------------
  1457. X
  1458. X
  1459. X
  1460. X;;-----------------------------------------------------------
  1461. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  1462. X;;-----------------------------------------------------------
  1463. X
  1464. X
  1465. X
  1466. X;;-----------------------------------------------------------
  1467. X;;            Module Initialization
  1468. X;;-----------------------------------------------------------
  1469. X
  1470. X;; FERN
  1471. X(load "/home/veos/lisp/fern")
  1472. X
  1473. X;; The Universal Motivator Engine
  1474. X(setq load-path "/home/colin/")
  1475. X(load "um-engine")
  1476. X
  1477. X
  1478. X
  1479. X;;-----------------------------------------------------------
  1480. X;;               Define Behavior
  1481. X;;-----------------------------------------------------------
  1482. X
  1483. X(setq sane t)
  1484. X
  1485. X(defun do-sane ()
  1486. X  (cond (sane (system "sleep 2"))))
  1487. X
  1488. X
  1489. X
  1490. X;;-----------------------------------------------------------
  1491. X;;               Instill Behavior
  1492. X;;-----------------------------------------------------------
  1493. X
  1494. X(fcon-add-persist-proc "dot" '(printf "persist.."))
  1495. X(fcon-add-persist-proc "sanity" '(do-sane))
  1496. X(fcon-add-react-proc "dump" '(pprint (fe-copy.ext.sibs)))
  1497. X
  1498. X
  1499. X
  1500. X;;-----------------------------------------------------------
  1501. X;;                Begin
  1502. X;;-----------------------------------------------------------
  1503. X
  1504. X(fcon-go)
  1505. END_OF_FILE
  1506. if test 1439 -ne `wc -c <'lisp/tabula_rasa.lsp'`; then
  1507.     echo shar: \"'lisp/tabula_rasa.lsp'\" unpacked with wrong size!
  1508. fi
  1509. # end of 'lisp/tabula_rasa.lsp'
  1510. fi
  1511. if test -f 'lisp/test_rpc.lsp' -a "${1}" != "-c" ; then 
  1512.   echo shar: Will not clobber existing file \"'lisp/test_rpc.lsp'\"
  1513. else
  1514. echo shar: Extracting \"'lisp/test_rpc.lsp'\" \(353 characters\)
  1515. sed "s/^X//" >'lisp/test_rpc.lsp' <<'END_OF_FILE'
  1516. X(setq self (vinit))
  1517. X
  1518. X
  1519. X(defun go (other) 
  1520. X  (read-time)
  1521. X  (do ((times 0))
  1522. X      ((> times 1000)
  1523. X       (printf1 "total time: ") (printf (read-time)))
  1524. X      
  1525. X      (vthrow `(,other) `(vthrow '(,self) "message"))
  1526. X      (do ()
  1527. X      ((vcatch))
  1528. X      (vtask))
  1529. X
  1530. X      (setq times (1+ times))
  1531. X      ))
  1532. X
  1533. X
  1534. X(defun gone ()
  1535. X  (loop 
  1536. X   (vtask)
  1537. X   (eval (vcatch))
  1538. X   ))
  1539. X
  1540. X
  1541. END_OF_FILE
  1542. if test 353 -ne `wc -c <'lisp/test_rpc.lsp'`; then
  1543.     echo shar: \"'lisp/test_rpc.lsp'\" unpacked with wrong size!
  1544. fi
  1545. # end of 'lisp/test_rpc.lsp'
  1546. fi
  1547. if test ! -d 'src' ; then
  1548.     echo shar: Creating directory \"'src'\"
  1549.     mkdir 'src'
  1550. fi
  1551. if test ! -d 'src/include' ; then
  1552.     echo shar: Creating directory \"'src/include'\"
  1553.     mkdir 'src/include'
  1554. fi
  1555. if test ! -d 'src/kernel_current' ; then
  1556.     echo shar: Creating directory \"'src/kernel_current'\"
  1557.     mkdir 'src/kernel_current'
  1558. fi
  1559. if test ! -d 'src/kernel_current/fern' ; then
  1560.     echo shar: Creating directory \"'src/kernel_current/fern'\"
  1561.     mkdir 'src/kernel_current/fern'
  1562. fi
  1563. if test -f 'src/kernel_current/fern/fcon.lsp' -a "${1}" != "-c" ; then 
  1564.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/fcon.lsp'\"
  1565. else
  1566. echo shar: Extracting \"'src/kernel_current/fern/fcon.lsp'\" \(2705 characters\)
  1567. sed "s/^X//" >'src/kernel_current/fern/fcon.lsp' <<'END_OF_FILE'
  1568. X;;-----------------------------------------------------------
  1569. X;; file: fcon.lsp
  1570. X;;
  1571. X;; FERN is the Fractal Entity Relativity Node.
  1572. X;; This file is the control flow compenent of the Fern System.
  1573. X;;
  1574. X;; creation: February 28, 1992
  1575. X;;
  1576. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1577. X;;-----------------------------------------------------------
  1578. X
  1579. X;;-----------------------------------------------------------
  1580. X;; Copyright (C) 1992  Geoffrey P. Coco,
  1581. X;; Human Interface Technology Lab, Seattle
  1582. X;;-----------------------------------------------------------
  1583. X
  1584. X
  1585. X;;-----------------------------------------------------------
  1586. X#|
  1587. X
  1588. XThese functions manage fern-entity lisp code flow.  They
  1589. Xcompose the program control component of the Fern System and
  1590. Xare collectively termed FCON.
  1591. X
  1592. XPrimarily, the FCON handles local behavior code management.
  1593. X
  1594. X|#
  1595. X;;-----------------------------------------------------------
  1596. X
  1597. X
  1598. X
  1599. X;;-----------------------------------------------------------
  1600. X;;            FCON Public Functions
  1601. X;;-----------------------------------------------------------
  1602. X
  1603. X
  1604. X;; pass "name" and '(function-call with args)
  1605. X(defun fcon-add-react-proc (proc-name func)
  1606. X  (progn
  1607. X    (fcon-delete-react-proc proc-name)
  1608. X    (setf react-procs (append react-procs (list (list proc-name func))))
  1609. X    ))
  1610. X
  1611. X;; pass "name" and '(function-call with args)
  1612. X(defun fcon-add-persist-proc (proc-name func)
  1613. X  (progn
  1614. X    (fcon-delete-persist-proc proc-name)
  1615. X    (setf persist-procs (append persist-procs (list (list proc-name func))))
  1616. X    ))
  1617. X  
  1618. X;; pass name
  1619. X(defun fcon-delete-react-proc (proc-name)
  1620. X  (setq react-procs
  1621. X    (delete proc-name react-procs :test (lambda (x y) (equal x (car y))))))
  1622. X
  1623. X;; pass name
  1624. X(defun fcon-delete-persist-proc (proc-name)
  1625. X  (setq persist-procs
  1626. X    (delete proc-name persist-procs :test (lambda (x y) (equal x (car y))))))
  1627. X
  1628. X;;-----------------------------------------------------------
  1629. X
  1630. X(defun fcon-ungo (uid)
  1631. X  (vthrow (list uid) (list 'fcon-local-ungo)))
  1632. X
  1633. X;;-----------------------------------------------------------
  1634. X
  1635. X
  1636. X
  1637. X;;-----------------------------------------------------------
  1638. X;;           FCON private functions
  1639. X;;-----------------------------------------------------------
  1640. X
  1641. X
  1642. X;;-----------------------------------------------------------
  1643. X
  1644. X(defun fcon-init ()
  1645. X  (progn
  1646. X    (setq persist-procs ()
  1647. X      react-procs ())
  1648. X    t))
  1649. X
  1650. X;;-----------------------------------------------------------
  1651. X
  1652. X(defun fcon-persist ()
  1653. X  (progn
  1654. X    ;; update physical boundary from hardware
  1655. X    (fph-perceive)
  1656. X
  1657. X    ;; do actual persisting
  1658. X    (do-procs persist-procs)
  1659. X
  1660. X    ;; update hardware from physical boundary
  1661. X    (fph-exude)
  1662. X    ))
  1663. X
  1664. X(defun fcon-react ()
  1665. X  (do-procs react-procs))
  1666. X
  1667. X;;-----------------------------------------------------------
  1668. X
  1669. X
  1670. X
  1671. END_OF_FILE
  1672. if test 2705 -ne `wc -c <'src/kernel_current/fern/fcon.lsp'`; then
  1673.     echo shar: \"'src/kernel_current/fern/fcon.lsp'\" unpacked with wrong size!
  1674. fi
  1675. # end of 'src/kernel_current/fern/fcon.lsp'
  1676. fi
  1677. if test -f 'src/kernel_current/fern/fe.lsp' -a "${1}" != "-c" ; then 
  1678.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/fe.lsp'\"
  1679. else
  1680. echo shar: Extracting \"'src/kernel_current/fern/fe.lsp'\" \(3080 characters\)
  1681. sed "s/^X//" >'src/kernel_current/fern/fe.lsp' <<'END_OF_FILE'
  1682. X;;-----------------------------------------------------------
  1683. X;; file: fe.lsp
  1684. X;;
  1685. X;; FERN is the Fractal Entity Relativity Node.
  1686. X;; This file is the entity component of the Fern System.
  1687. X;;
  1688. X;; creation: February 28, 1992
  1689. X;;
  1690. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1691. X;;-----------------------------------------------------------
  1692. X
  1693. X;;-----------------------------------------------------------
  1694. X;; Copyright (C) 1992  Geoffrey P. Coco,
  1695. X;; Human Interface Technology Lab, Seattle
  1696. X;;-----------------------------------------------------------
  1697. X
  1698. X;;-----------------------------------------------------------
  1699. X#|
  1700. X
  1701. XThese functions perform all local database operations are
  1702. Xcollectively termed the FE.
  1703. X
  1704. XThe FE maintains the "perc" grouplspace partition.  That is,
  1705. Xall data associated with the Fern System is passed through
  1706. Xthese functions to the grouplespace.
  1707. X
  1708. XInternally, the Fern System uses these functions exclusively.
  1709. XAnd, in the interest of forward compatibility, Fern
  1710. Xprogrammers are highly encouraged to use these functions
  1711. Xexclusively to access Fern's "perc" grouplespace partition.
  1712. X
  1713. X|#
  1714. X;;-----------------------------------------------------------
  1715. X
  1716. X
  1717. X
  1718. X;;-----------------------------------------------------------
  1719. X;;            Load FE Subcomponents
  1720. X;;-----------------------------------------------------------
  1721. X
  1722. X(load "fe_ext")
  1723. X(load "fe_bnd")
  1724. X(load "fe_int")
  1725. X(load "fe_locl")
  1726. X
  1727. X;;-----------------------------------------------------------
  1728. X
  1729. X
  1730. X
  1731. X
  1732. X;;===========================================================
  1733. X;;
  1734. X;;            FE PRIVATE FUNCTIONS
  1735. X;;
  1736. X;;===========================================================
  1737. X
  1738. X
  1739. X;;-----------------------------------------------------------
  1740. X#|
  1741. Xall FE functions assume that the partitions are setup like
  1742. Xthis.  That is, for any FE functions to work properly, the
  1743. X"perc" partition must be fully articulated. 
  1744. X
  1745. XA full "perc" partition contains the three subpartitions:
  1746. X"external", "boundary", "internal".  Furthermore, those
  1747. Xsubpartitions must contain their respective sub-partitions.
  1748. X
  1749. XAn empty but articulated perception partition looks like:
  1750. X
  1751. X("perc"
  1752. X
  1753. X (;external
  1754. X  ()      ;spaces
  1755. X  ()      ;siblings
  1756. X  ()      ;filters
  1757. X  )
  1758. X
  1759. X (;boundary
  1760. X  ()      ;virtual
  1761. X  ()      ;physical
  1762. X  )
  1763. X
  1764. X (;internal
  1765. X  ()      ;local
  1766. X  ()      ;sublings
  1767. X  ()      ;filters
  1768. X  )
  1769. X
  1770. X )
  1771. X
  1772. X|#
  1773. X
  1774. X(defun fe-init ()
  1775. X  (progn
  1776. X    ;; setup the "perception" grouplespace partition.
  1777. X    (put-gspace-partition '("perc"
  1778. X                ()      ;; external
  1779. X                ()      ;; boundary
  1780. X                ()      ;; internal
  1781. X                ))
  1782. X
  1783. X    ;; setup "external" sub-partitions.
  1784. X    (fe-put.ext '(()     ;; current spaces.
  1785. X          ()     ;; siblings among all spaces.
  1786. X          ()     ;; perceptual filters.
  1787. X          ))
  1788. X
  1789. X    ;; setup "boundary" sub-partitions.
  1790. X    (fe-put.bndry (list self  ;; self uid.
  1791. X            ()    ;; virtual object-list.
  1792. X            ()    ;; physical object-list.
  1793. X            ))
  1794. X
  1795. X    ;; setup "internal" sub-partitions.
  1796. X    (fe-put.int '(()     ;; local memory
  1797. X          ()     ;; the space for the entity's internal world
  1798. X          ()     ;; the filters for each contained entity
  1799. X          ))
  1800. X    ))
  1801. X
  1802. X;;-----------------------------------------------------------
  1803. END_OF_FILE
  1804. if test 3080 -ne `wc -c <'src/kernel_current/fern/fe.lsp'`; then
  1805.     echo shar: \"'src/kernel_current/fern/fe.lsp'\" unpacked with wrong size!
  1806. fi
  1807. # end of 'src/kernel_current/fern/fe.lsp'
  1808. fi
  1809. if test -f 'src/kernel_current/fern/fe_locl.lsp' -a "${1}" != "-c" ; then 
  1810.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/fe_locl.lsp'\"
  1811. else
  1812. echo shar: Extracting \"'src/kernel_current/fern/fe_locl.lsp'\" \(2295 characters\)
  1813. sed "s/^X//" >'src/kernel_current/fern/fe_locl.lsp' <<'END_OF_FILE'
  1814. X;
  1815. X; local.lsp
  1816. X;
  1817. X; Copyright (C) 1992  Washington Technology Center
  1818. X;
  1819. X; by Andrew MacDonald at the HITLab
  1820. X;
  1821. X; object caching in the local workspace
  1822. X;
  1823. X; this is based on fe_bnd.lsp and fe_int.lsp, and manipulates objects
  1824. X; in perc.int.locl 
  1825. X;
  1826. X; functions are of the form fe-(put|get|copy).int.locl.(accessors),
  1827. X; with macros of the form lo-(put|get|copy).(accessors) defined
  1828. X; for each function
  1829. X;
  1830. X;;-----------------------------------------------------------
  1831. X;; file: fe.lsp
  1832. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1833. X;;-----------------------------------------------------------
  1834. X
  1835. X;;-----------------------------------------------------------
  1836. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  1837. X;;-----------------------------------------------------------
  1838. X
  1839. X
  1840. X;;===========================================================
  1841. X;;         Show Local Object Space
  1842. X;;===========================================================
  1843. X
  1844. X(defun lo-dump ()
  1845. X  (pprint (fe-copy.int.locl)))
  1846. X
  1847. X(defun lo-empty ()
  1848. X  (pprint (fe-xtrct.int.locl)))
  1849. X
  1850. X;;===========================================================
  1851. X;;         Macro Shortcuts
  1852. X;;===========================================================
  1853. X
  1854. X(defmacro lo-jam-ob (ob)
  1855. X  `(fe-jam.int.locl.ob ,ob))
  1856. X
  1857. X(defmacro lo-put-ob (ob)
  1858. X  `(fe-put.int.locl.ob ,ob))
  1859. X
  1860. X(defmacro lo-copy-ob (ob-name)
  1861. X  `(fe-copy.int.locl.ob ,ob-name))
  1862. X
  1863. X(defmacro lo-get-ob (ob-name)
  1864. X  `(fe-get.int.locl.ob ,ob-name))
  1865. X
  1866. X;----------------------------------------------------------------
  1867. X
  1868. X(defmacro lo-copy-ob-names ()
  1869. X  '(fe-copy.int.locl.ob.names))
  1870. X
  1871. X;----------------------------------------------------------------
  1872. X
  1873. X(defmacro lo-jab-attr (ob-name attr)
  1874. X  `(fe-jam.int.locl.ob.attr ,ob-name ,attr))
  1875. X
  1876. X(defmacro lo-put-attr (ob-name attr)
  1877. X  `(fe-put.int.locl.ob.attr ,ob-name ,attr))
  1878. X
  1879. X;----------------------------------------------------------------
  1880. X
  1881. X(defmacro lo-get-attr (ob-name attr-name)
  1882. X  `(fe-get.int.locl.ob.attr ,ob-name ,attr-name))
  1883. X
  1884. X;----------------------------------------------------------------
  1885. X
  1886. X(defmacro lo-copy-attr (ob-name attr-name)
  1887. X  `(fe-copy.int.locl.ob.attr ,ob-name ,attr-name))
  1888. X
  1889. X(defmacro lo-copy-attr-names (ob-name)
  1890. X  `(fe-copy.int.locl.ob.attr.names ,ob-name))
  1891. X
  1892. X(defmacro lo-copy-attr-val (ob-name attr-name)
  1893. X  `(fe-copy.int.locl.ob.attr.val ,ob-name ,attr-name))
  1894. X
  1895. END_OF_FILE
  1896. if test 2295 -ne `wc -c <'src/kernel_current/fern/fe_locl.lsp'`; then
  1897.     echo shar: \"'src/kernel_current/fern/fe_locl.lsp'\" unpacked with wrong size!
  1898. fi
  1899. # end of 'src/kernel_current/fern/fe_locl.lsp'
  1900. fi
  1901. if test -f 'src/kernel_current/fern/fph.lsp' -a "${1}" != "-c" ; then 
  1902.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/fph.lsp'\"
  1903. else
  1904. echo shar: Extracting \"'src/kernel_current/fern/fph.lsp'\" \(2467 characters\)
  1905. sed "s/^X//" >'src/kernel_current/fern/fph.lsp' <<'END_OF_FILE'
  1906. X;;-----------------------------------------------------------
  1907. X;; file: fph.lsp
  1908. X;;
  1909. X;; FERN is the Fractal Entity Relativity Node.
  1910. X;; This file is the FPH compenent of the Fern System.
  1911. X;;
  1912. X;; creation: March 28, 1992
  1913. X;;
  1914. X;; by Geoffrey P. Coco at the HITLab, Seattle
  1915. X;;-----------------------------------------------------------
  1916. X
  1917. X;;-----------------------------------------------------------
  1918. X;; Copyright (C) 1992  Geoffrey P. Coco,
  1919. X;; Human Interface Technology Lab, Seattle
  1920. X;;-----------------------------------------------------------
  1921. X
  1922. X
  1923. X;;-----------------------------------------------------------
  1924. X#|
  1925. X
  1926. XThese functions provide users of the Fern System with a
  1927. Xstandardized mechanism for coupling hardware-specific
  1928. Xinterface code to objects in the 'physical' boundary.  They
  1929. Xrepresent the FPH component of the Fern System.
  1930. X
  1931. X|#
  1932. X;;-----------------------------------------------------------
  1933. X
  1934. X
  1935. X;;===========================================================
  1936. X;;
  1937. X;;             FPH PUBLIC FUNCTIONS
  1938. X;;
  1939. X;;===========================================================
  1940. X
  1941. X;; pass "name" and '(function-call with args)
  1942. X(defun fph-add-input-proc (proc-name func)
  1943. X  (progn
  1944. X    (fph-delete-input-proc proc-name)
  1945. X    (setf pre-persist-procs (append pre-persist-procs (list (list proc-name func))))
  1946. X    ))
  1947. X
  1948. X;; pass "name" and '(function-call with args)
  1949. X(defun fph-add-output-proc (proc-name func)
  1950. X  (progn
  1951. X    (fph-delete-output-proc proc-name)
  1952. X    (setf post-persist-procs (append post-persist-procs (list (list proc-name func))))
  1953. X    ))
  1954. X  
  1955. X;; pass name
  1956. X(defun fph-delete-input-proc (proc-name)
  1957. X  (setq pre-persist-procs
  1958. X    (delete proc-name pre-persist-procs :test (lambda (x y) (equal x (car y))))))
  1959. X
  1960. X;; pass name
  1961. X(defun fph-delete-output-proc (proc-name)
  1962. X  (setq post-persist-procs
  1963. X    (delete proc-name post-persist-procs :test (lambda (x y) (equal x (car y))))))
  1964. X
  1965. X
  1966. X;;===========================================================
  1967. X;;
  1968. X;;             FPH PRIVATE FUNCTIONS
  1969. X;;
  1970. X;;===========================================================
  1971. X
  1972. X
  1973. X;;-----------------------------------------------------------
  1974. X
  1975. X(defun fph-init ()
  1976. X  (setq pre-persist-procs ()
  1977. X    post-persist-procs ())
  1978. X  )
  1979. X
  1980. X;;-----------------------------------------------------------
  1981. X
  1982. X;; update physical boundary from hardware
  1983. X(defun fph-perceive ()
  1984. X  (do-procs pre-persist-procs)
  1985. X  )
  1986. X
  1987. X;; update hardware from physical boundary
  1988. X(defun fph-exude ()
  1989. X  (do-procs post-persist-procs)
  1990. X  )
  1991. X;;-----------------------------------------------------------
  1992. X
  1993. X
  1994. X
  1995. END_OF_FILE
  1996. if test 2467 -ne `wc -c <'src/kernel_current/fern/fph.lsp'`; then
  1997.     echo shar: \"'src/kernel_current/fern/fph.lsp'\" unpacked with wrong size!
  1998. fi
  1999. # end of 'src/kernel_current/fern/fph.lsp'
  2000. fi
  2001. if test -f 'src/kernel_current/fern/load_bal.lsp' -a "${1}" != "-c" ; then 
  2002.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/load_bal.lsp'\"
  2003. else
  2004. echo shar: Extracting \"'src/kernel_current/fern/load_bal.lsp'\" \(2025 characters\)
  2005. sed "s/^X//" >'src/kernel_current/fern/load_bal.lsp' <<'END_OF_FILE'
  2006. X;;-----------------------------------------------------------
  2007. X;; file: fbal.lsp
  2008. X;;
  2009. X;; FERN is the Fractal Entity Relativity Node.
  2010. X;; This file is the Load Balancing module of the Fern System.
  2011. X;;
  2012. X;; creation: February 28, 1992
  2013. X;;
  2014. X;; by Geoffrey P. Coco at the HITLab, Seattle
  2015. X;;-----------------------------------------------------------
  2016. X
  2017. X;;-----------------------------------------------------------
  2018. X;; Copyright (C) 1992  Human Interface Technology Lab, Seattle
  2019. X;;-----------------------------------------------------------
  2020. X
  2021. X
  2022. X;;-----------------------------------------------------------
  2023. X#|
  2024. X
  2025. XThese functions provide transparent load-balancing for Fern
  2026. XEntities and compose the Load Balancing (or FBAL) component
  2027. Xof the Fern System.
  2028. X
  2029. XThe FBAL component ensures that the various computational
  2030. Xrequirements of a running scenario are evenly distributed
  2031. Xacross the local area network workstations.
  2032. X
  2033. XSimply, entity computational requirements are rated with a
  2034. Xscalar, as are hardware capabilities.  Also important are the
  2035. Xhardware peripheral requirements an entity.
  2036. X
  2037. XThese factors are rules for inferencing on which local
  2038. Xnetwork host to place the next entity.  The one local-area
  2039. XFBAL entity (the universe, by convention) maintains the
  2040. Xdynamic database of network-node/entity-load information.
  2041. X
  2042. XNo dynamic balancing is projected (i.e. migrating entities).
  2043. X
  2044. X|#
  2045. X;;-----------------------------------------------------------
  2046. X
  2047. X
  2048. X
  2049. X;;-----------------------------------------------------------
  2050. X;;           FBAL Private Functions
  2051. X;;-----------------------------------------------------------
  2052. X
  2053. X(define fbal-init ()
  2054. X  (progn
  2055. X    (vget '(> ("balance" @@) **))
  2056. X    (vput '("balance" () ()) '(^ @@))
  2057. X    
  2058. X    ))
  2059. X
  2060. X
  2061. X(defun fbal-make-node (binary program)
  2062. X  (vthrow (list universe) `(fbal-remote-new-make-node binary
  2063. X                              program
  2064. X                              ,self))
  2065. X  )
  2066. X
  2067. X
  2068. X(defun fbal-remote-make-node (binary program ancestor)
  2069. X  (fcon-make-node (fbal-avail-host binary program) binary program ancestor)
  2070. X  )
  2071. X
  2072. X
  2073. X(defun fbal-avail-host (binary program)
  2074. X  
  2075. X  )
  2076. X
  2077. X
  2078. X
  2079. X
  2080. END_OF_FILE
  2081. if test 2025 -ne `wc -c <'src/kernel_current/fern/load_bal.lsp'`; then
  2082.     echo shar: \"'src/kernel_current/fern/load_bal.lsp'\" unpacked with wrong size!
  2083. fi
  2084. # end of 'src/kernel_current/fern/load_bal.lsp'
  2085. fi
  2086. if test -f 'src/kernel_current/fern/zoot.lsp' -a "${1}" != "-c" ; then 
  2087.   echo shar: Will not clobber existing file \"'src/kernel_current/fern/zoot.lsp'\"
  2088. else
  2089. echo shar: Extracting \"'src/kernel_current/fern/zoot.lsp'\" \(333 characters\)
  2090. sed "s/^X//" >'src/kernel_current/fern/zoot.lsp' <<'END_OF_FILE'
  2091. X(read-time)
  2092. X(do ((i 0))
  2093. X    ((> i 10000) t)
  2094. X
  2095. X    (let* ((a (+ 1 2))
  2096. X       (b (+ a 1)))
  2097. X
  2098. X      (+ a b))
  2099. X    (setq i (1+ i))
  2100. X    )
  2101. X(printf "time after let loop: " (read-time))
  2102. X
  2103. X(do ((i 0))
  2104. X    ((> i 10000) t)
  2105. X
  2106. X    (setq a (+ 1 2))
  2107. X    (setq b (+ a 1))
  2108. X    (+ a b)
  2109. X    (setq i (1+ i))
  2110. X    )
  2111. X
  2112. X(printf "time after setq loop: " (read-time))
  2113. END_OF_FILE
  2114. if test 333 -ne `wc -c <'src/kernel_current/fern/zoot.lsp'`; then
  2115.     echo shar: \"'src/kernel_current/fern/zoot.lsp'\" unpacked with wrong size!
  2116. fi
  2117. # end of 'src/kernel_current/fern/zoot.lsp'
  2118. fi
  2119. if test ! -d 'src/kernel_current/include' ; then
  2120.     echo shar: Creating directory \"'src/kernel_current/include'\"
  2121.     mkdir 'src/kernel_current/include'
  2122. fi
  2123. if test -f 'src/kernel_current/include/fern.h' -a "${1}" != "-c" ; then 
  2124.   echo shar: Will not clobber existing file \"'src/kernel_current/include/fern.h'\"
  2125. else
  2126. echo shar: Extracting \"'src/kernel_current/include/fern.h'\" \(1899 characters\)
  2127. sed "s/^X//" >'src/kernel_current/include/fern.h' <<'END_OF_FILE'
  2128. X/****************************************************************************************
  2129. X * file: fern.h                                        *
  2130. X *                                            *
  2131. X * February 25, 1992: implementation of the Fractal Entity Relativity Node for veos.    *
  2132. X *                                                    *
  2133. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  2134. X *                                            *
  2135. X ****************************************************************************************/
  2136. X
  2137. X/****************************************************************************************
  2138. X * Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  2139. X ****************************************************************************************/
  2140. X
  2141. X
  2142. X/*--------------------------------------------------------------------------------*
  2143. X                  Useful Externs
  2144. X *--------------------------------------------------------------------------------*/
  2145. X
  2146. Xextern LVAL xsendmsg0();
  2147. Xextern LVAL s_unbound;
  2148. Xextern LVAL true;
  2149. Xextern LVAL s_stderr;
  2150. Xextern LVAL s_quote;
  2151. X
  2152. Xextern void Native_NextMsg();
  2153. X
  2154. X/*--------------------------------------------------------------------------------*
  2155. X                  Fern Data Structures
  2156. X *--------------------------------------------------------------------------------*/
  2157. X
  2158. Xtypedef struct stmpnode {
  2159. X    
  2160. X    str63        sHost;
  2161. X    int            iPort;
  2162. X    float        fData;
  2163. X    struct stmpnode    *pNext;
  2164. X
  2165. X    } TStampEntRec,
  2166. X      *TPStampEntRec,
  2167. X      **THStampEntRec;
  2168. X
  2169. Xtypedef TPStampEntRec    TStampEntHash[13];
  2170. X
  2171. X/*--------------------------------------------------------------------------------*
  2172. X                    Defines
  2173. X *--------------------------------------------------------------------------------*/
  2174. X
  2175. X#define FBASE_HASH_HOST(sHost) ((sHost[0] - 'a') / 2)
  2176. X#define FBASE_HASH_HIT(pXVect, pFNode) \
  2177. X(getfixnum(getelement(pXVect, 1)) == (pFNode)->iPort && \
  2178. X strcmp(getstring(getelement(pXVect, 0)), (pFNode)->sHost) == 0)
  2179. X
  2180. X/*--------------------------------------------------------------------------------*/
  2181. END_OF_FILE
  2182. if test 1899 -ne `wc -c <'src/kernel_current/include/fern.h'`; then
  2183.     echo shar: \"'src/kernel_current/include/fern.h'\" unpacked with wrong size!
  2184. fi
  2185. # end of 'src/kernel_current/include/fern.h'
  2186. fi
  2187. if test -f 'src/kernel_current/include/fern_prims.h' -a "${1}" != "-c" ; then 
  2188.   echo shar: Will not clobber existing file \"'src/kernel_current/include/fern_prims.h'\"
  2189. else
  2190. echo shar: Extracting \"'src/kernel_current/include/fern_prims.h'\" \(1892 characters\)
  2191. sed "s/^X//" >'src/kernel_current/include/fern_prims.h' <<'END_OF_FILE'
  2192. X/****************************************************************************************
  2193. X * file: fern_prims.h                                    *
  2194. X *                                            *
  2195. X * February 25, 1992: implementation of the Fractal Entity Relativity Node for veos.    *
  2196. X *                                                    *
  2197. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  2198. X *                                            *
  2199. X ****************************************************************************************/
  2200. X
  2201. X/****************************************************************************************
  2202. X * Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  2203. X ****************************************************************************************/
  2204. X
  2205. X
  2206. X/*--------------------------------------------------------------------------------*/
  2207. X
  2208. X#ifdef FERN_LOAD
  2209. X
  2210. XDEFINE_SUBR("FCON-GO", Fbase_fcon_go)
  2211. XDEFINE_SUBR("FCON-LOCAL-UNGO", Fbase_fcon_local_ungo)
  2212. XDEFINE_SUBR("FCON-TIME", Fbase_fcon_time)
  2213. XDEFINE_SUBR("FBASE-INIT", Fbase_Init)
  2214. XDEFINE_SUBR("FBASE-NEW-HTAB", Fbase_Hash_NewTab)
  2215. XDEFINE_SUBR("FBASE-PUT-HASH", Fbase_Hash_AddUid)
  2216. XDEFINE_SUBR("FBASE-GET-HASH", Fbase_Hash_RemoveUid)
  2217. XDEFINE_SUBR("FBASE-HASH", Fbase_Hash_HashUid)
  2218. XDEFINE_SUBR("FE-COPY.INT.SUBS", Fbase_CopyIntSubs)
  2219. XDEFINE_SUBR("FBASE-INIT-COPY.INT.SUBS", Fbase_Init_CopyIntSubs)
  2220. XDEFINE_SUBR("FE-COPY.BNDRY.VRT", Fbase_CopyBndryVrt)
  2221. XDEFINE_SUBR("FBASE-INIT-COPY.BNDRY.VRT", Fbase_Init_CopyBndryVrt)
  2222. X
  2223. X#endif
  2224. X
  2225. X
  2226. X#ifdef FERN_DEFS
  2227. X
  2228. Xextern LVAL Fbase_fcon_go();
  2229. Xextern LVAL Fbase_fcon_local_ungo();
  2230. Xextern LVAL Fbase_fcon_time();
  2231. Xextern LVAL Fbase_Init();
  2232. Xextern LVAL Fbase_Hash_NewTab();
  2233. Xextern LVAL Fbase_Hash_AddUid();
  2234. Xextern LVAL Fbase_Hash_RemoveUid();
  2235. Xextern LVAL Fbase_Hash_HashUid();
  2236. Xextern LVAL Fbase_CopyIntSubs();
  2237. Xextern LVAL Fbase_CopyBndryVrt();
  2238. Xextern LVAL Fbase_Init_CopyIntSubs();
  2239. Xextern LVAL Fbase_Init_CopyBndryVrt();
  2240. X
  2241. X#endif
  2242. X
  2243. X/*--------------------------------------------------------------------------------*/
  2244. END_OF_FILE
  2245. if test 1892 -ne `wc -c <'src/kernel_current/include/fern_prims.h'`; then
  2246.     echo shar: \"'src/kernel_current/include/fern_prims.h'\" unpacked with wrong size!
  2247. fi
  2248. # end of 'src/kernel_current/include/fern_prims.h'
  2249. fi
  2250. if test -f 'src/kernel_current/include/xv_native_prims.h' -a "${1}" != "-c" ; then 
  2251.   echo shar: Will not clobber existing file \"'src/kernel_current/include/xv_native_prims.h'\"
  2252. else
  2253. echo shar: Extracting \"'src/kernel_current/include/xv_native_prims.h'\" \(1763 characters\)
  2254. sed "s/^X//" >'src/kernel_current/include/xv_native_prims.h' <<'END_OF_FILE'
  2255. X/****************************************************************************************
  2256. X *                                            *
  2257. X * file: xv_native_prims.h                                *
  2258. X *                                            *
  2259. X * the xlisp include file for integration with VEOS native prims.            *
  2260. X *                                            *
  2261. X * creation: December, 1991                                *
  2262. X *                                            *
  2263. X *                                            *
  2264. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  2265. X *                                            *
  2266. X ****************************************************************************************/
  2267. X
  2268. X/****************************************************************************************
  2269. X * Copyright (C) 1992  Geoffrey P. Coco, Human Interface Technology Lab, Seattle    *
  2270. X ****************************************************************************************/
  2271. X
  2272. X
  2273. X
  2274. X/****************************************************************************************/
  2275. X
  2276. X#ifdef VEOS_NATIVE_LOAD
  2277. X
  2278. XDEFINE_SUBR("VPUT", Native_Put  )
  2279. XDEFINE_SUBR("VGET", Native_Get  )
  2280. XDEFINE_SUBR("VCOPY", Native_Copy )
  2281. XDEFINE_SUBR("VINIT", Native_Init )
  2282. XDEFINE_SUBR("VCLOSE", Native_Close )
  2283. XDEFINE_SUBR("VTASK", Native_Task )
  2284. XDEFINE_SUBR("VTHROW", Native_Throw )
  2285. XDEFINE_SUBR("VCATCH", Native_Catch )
  2286. XDEFINE_SUBR("VNOSIGNALS", Native_NoSignals )
  2287. XDEFINE_SUBR("VBUGS", Native_Bugs )
  2288. XDEFINE_SUBR("VZOOT", Native_Zoot )
  2289. XDEFINE_SUBR("VMINTIME", Native_MinTime )
  2290. X
  2291. X#endif
  2292. X
  2293. X
  2294. X#ifdef VEOS_NATIVE_DEFS
  2295. X
  2296. Xextern LVAL Native_Put();
  2297. Xextern LVAL Native_Get();
  2298. Xextern LVAL Native_Copy();
  2299. Xextern LVAL Native_Init();
  2300. Xextern LVAL Native_Close();
  2301. Xextern LVAL Native_Task();
  2302. Xextern LVAL Native_Throw();
  2303. Xextern LVAL Native_Catch();
  2304. Xextern LVAL Native_NoSignals();
  2305. Xextern LVAL Native_Bugs();
  2306. Xextern LVAL Native_Zoot();
  2307. Xextern LVAL Native_MinTime();
  2308. X
  2309. X#endif
  2310. X
  2311. X/****************************************************************************************/
  2312. END_OF_FILE
  2313. if test 1763 -ne `wc -c <'src/kernel_current/include/xv_native_prims.h'`; then
  2314.     echo shar: \"'src/kernel_current/include/xv_native_prims.h'\" unpacked with wrong size!
  2315. fi
  2316. # end of 'src/kernel_current/include/xv_native_prims.h'
  2317. fi
  2318. if test ! -d 'src/kernel_current/nancy' ; then
  2319.     echo shar: Creating directory \"'src/kernel_current/nancy'\"
  2320.     mkdir 'src/kernel_current/nancy'
  2321. fi
  2322. if test ! -d 'src/kernel_current/shell' ; then
  2323.     echo shar: Creating directory \"'src/kernel_current/shell'\"
  2324.     mkdir 'src/kernel_current/shell'
  2325. fi
  2326. if test -f 'src/kernel_current/shell/main.c' -a "${1}" != "-c" ; then 
  2327.   echo shar: Will not clobber existing file \"'src/kernel_current/shell/main.c'\"
  2328. else
  2329. echo shar: Extracting \"'src/kernel_current/shell/main.c'\" \(1899 characters\)
  2330. sed "s/^X//" >'src/kernel_current/shell/main.c' <<'END_OF_FILE'
  2331. X/****************************************************************************************
  2332. X *                                            *
  2333. X * file: main.c                                        *
  2334. X *                                            *
  2335. X * An example controlling of veos using xlisp interface.                *
  2336. X *                                            *
  2337. X * creation: December, 1991                                *
  2338. X *                                            *
  2339. X *                                            *
  2340. X * by Geoffrey P. Coco at the HITLab, Seattle.                          *
  2341. X *                                            *
  2342. X ****************************************************************************************/
  2343. X
  2344. X/****************************************************************************************
  2345. X * Copyright (C) 1992  Geoffrey P. Coco, Human Interface Technology Lab, Seattle    *
  2346. X ****************************************************************************************/
  2347. X
  2348. X
  2349. X#include "world.h"
  2350. X
  2351. Xextern xmain();
  2352. X
  2353. X
  2354. X/****************************************************************************************
  2355. X * main
  2356. X * launchpad of any stand-alone program
  2357. X ****************************************************************************************/
  2358. Xmain(argc, argv)
  2359. X    int        argc;
  2360. X    char    *argv[];
  2361. X{
  2362. X    /** call the xlisp controller, never returns **/
  2363. X    xmain(argc, argv);
  2364. X    }
  2365. X
  2366. X
  2367. X/****************************************************************************************
  2368. X * xlinclude_hybrid_prims
  2369. X * lisp calls this function to load user-defined lisp primitives
  2370. X ****************************************************************************************/
  2371. Xxlinclude_hybrid_prims()
  2372. X{
  2373. X    /** load veos native lisp primitive entries **/
  2374. X    Shell_LoadNativePrims();
  2375. X    Fern_LoadPrims();
  2376. X    XVUtils_LoadPrims();
  2377. X    }
  2378. X
  2379. X
  2380. X
  2381. X/****************************************************************************************
  2382. X * xlshutdown_hybrid
  2383. X * lisp calls this function before graceful exit
  2384. X ****************************************************************************************/
  2385. Xxlshutdown_hybrid()
  2386. X{
  2387. X    /** let the kernel unwind **/
  2388. X    Kernel_Shutdown();
  2389. X    }
  2390. X
  2391. X
  2392. X
  2393. X
  2394. END_OF_FILE
  2395. if test 1899 -ne `wc -c <'src/kernel_current/shell/main.c'`; then
  2396.     echo shar: \"'src/kernel_current/shell/main.c'\" unpacked with wrong size!
  2397. fi
  2398. # end of 'src/kernel_current/shell/main.c'
  2399. fi
  2400. if test ! -d 'src/kernel_current/talk' ; then
  2401.     echo shar: Creating directory \"'src/kernel_current/talk'\"
  2402.     mkdir 'src/kernel_current/talk'
  2403. fi
  2404. if test -f 'src/machine_specific.mk' -a "${1}" != "-c" ; then 
  2405.   echo shar: Will not clobber existing file \"'src/machine_specific.mk'\"
  2406. else
  2407. echo shar: Extracting \"'src/machine_specific.mk'\" \(1367 characters\)
  2408. sed "s/^X//" >'src/machine_specific.mk' <<'END_OF_FILE'
  2409. X# ***************************************************************************************
  2410. X#  Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  2411. X#                                             *
  2412. X#  This program is free software; you can redistribute it and/or modify            *
  2413. X#  it under the terms of the VEOS License which cab be found in file                    *
  2414. X#  VEOS_LICENSE in the root of the veos directory tree.                                 *
  2415. X#                                             *
  2416. X#  This program is distributed in the hope that it will be useful,            *
  2417. X#  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
  2418. X#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
  2419. X#  VEOS License for more details.                               *
  2420. X#                                             *
  2421. X#   Questions about this software should be addressed to:                 *
  2422. X#                                             *
  2423. X#      Software Support                                *
  2424. X#      Human Interface Technology Laboratory                        *
  2425. X#       FJ-15, University of Washington                            *
  2426. X#       Seattle, Washington     98195    USA                        *
  2427. X#                                             *
  2428. X#   or by email:                                    *
  2429. X#                                             *
  2430. X#       veos-support@hitl.washington.edu                        *
  2431. X#                                             *
  2432. X# ***************************************************************************************
  2433. X
  2434. X
  2435. X# use these for Sun4
  2436. X
  2437. XUPDATE_LIB = ranlib
  2438. X#CC = /usr/gnu/bin/gcc -O4 -w ${VEOS_INCLUDE_DIRS} -D_SUN_ 
  2439. X#AR = /usr/gnu/bin/ar rcv
  2440. XCC = cc -g -Bstatic -w ${VEOS_INCLUDE_DIRS} -D_SUN_
  2441. XAR = ar rcv
  2442. XASSOC_LIBS = -lm
  2443. X
  2444. END_OF_FILE
  2445. if test 1367 -ne `wc -c <'src/machine_specific.mk'`; then
  2446.     echo shar: \"'src/machine_specific.mk'\" unpacked with wrong size!
  2447. fi
  2448. # end of 'src/machine_specific.mk'
  2449. fi
  2450. if test ! -d 'src/utils' ; then
  2451.     echo shar: Creating directory \"'src/utils'\"
  2452.     mkdir 'src/utils'
  2453. fi
  2454. if test -f 'src/utils/error_check.c' -a "${1}" != "-c" ; then 
  2455.   echo shar: Will not clobber existing file \"'src/utils/error_check.c'\"
  2456. else
  2457. echo shar: Extracting \"'src/utils/error_check.c'\" \(1186 characters\)
  2458. sed "s/^X//" >'src/utils/error_check.c' <<'END_OF_FILE'
  2459. X/* error_check.c
  2460. X
  2461. X   by Fran Taylor, at the HITLab, Seattle
  2462. X
  2463. X   Copyright (C) 1992  Human Interface Technology Lab, Seattle
  2464. X
  2465. X   Error checking functions for Xlisp functions written in C */
  2466. X
  2467. X#include "xlisp.h"
  2468. X
  2469. Xint triplep(v)
  2470. XLVAL v;
  2471. X{
  2472. X  int i;
  2473. X  if (!vectorp(v) || (getsz(v) != 3))
  2474. X    return 0;
  2475. X  for(i = 0; i < 3; i++)
  2476. X    if (!floatp(getelement(v, i)))
  2477. X      return 0;
  2478. X  return 1;
  2479. X}
  2480. X
  2481. Xint quaternionp(v)
  2482. XLVAL v;
  2483. X{
  2484. X  LVAL p;
  2485. X  int i;
  2486. X
  2487. X  if (!vectorp(v) || (getsz(v) != 2) || !floatp(getelement(v, 0)))
  2488. X    return 0;
  2489. X  if (!vectorp(p = getelement(v, 1)) || (getsz(p) != 3))
  2490. X    return 0;
  2491. X  for(i = 0; i < 3; i++)
  2492. X    if (!floatp(getelement(p, i)))
  2493. X      return 0;
  2494. X  return 1;
  2495. X}
  2496. X
  2497. Xint pt_quatp(x)
  2498. XLVAL x;
  2499. X{
  2500. X  if (!vectorp(x) || (getsz(x) != 2) || !triplep(getelement(x, 0)) ||
  2501. X      !quaternionp(getelement(x, 1)))
  2502. X    return 0;
  2503. X  return 1;
  2504. X}
  2505. X
  2506. Xint pt_eulerp(x)
  2507. XLVAL x;
  2508. X{
  2509. X  if (!vectorp(x) || (getsz(x) != 2) || !triplep(getelement(x, 0)) ||
  2510. X      !triplep(getelement(x, 1)))
  2511. X    return 0;
  2512. X  return 1;
  2513. X}
  2514. X
  2515. Xint matrixp(m)
  2516. XLVAL m;
  2517. X{
  2518. X  int i;
  2519. X
  2520. X  if (!vectorp(m) || (getsz(m) != 16))
  2521. X    return 0;
  2522. X  for(i = 0; i < 16; i++)
  2523. X    if (!floatp(getelement(m, i)))
  2524. X      return 0;
  2525. X  return 1;
  2526. X}
  2527. X
  2528. X   
  2529. END_OF_FILE
  2530. if test 1186 -ne `wc -c <'src/utils/error_check.c'`; then
  2531.     echo shar: \"'src/utils/error_check.c'\" unpacked with wrong size!
  2532. fi
  2533. # end of 'src/utils/error_check.c'
  2534. fi
  2535. if test -f 'src/utils/makefile' -a "${1}" != "-c" ; then 
  2536.   echo shar: Will not clobber existing file \"'src/utils/makefile'\"
  2537. else
  2538. echo shar: Extracting \"'src/utils/makefile'\" \(1472 characters\)
  2539. sed "s/^X//" >'src/utils/makefile' <<'END_OF_FILE'
  2540. X# ***************************************************************************************
  2541. X#  Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  2542. X# ***************************************************************************************
  2543. X
  2544. X
  2545. X#--------------------------------------------------------------------------------------
  2546. X
  2547. XHOME = /home/voodoo/veos/
  2548. X
  2549. XLISP_INCLUDE_DIR = ${HOME}src/xlisp/xcore/c/
  2550. XPUB_INCLUDE_DIR = ${HOME}src/include/
  2551. XVEOS_INCLUDE_DIRS = -I${PUB_INCLUDE_DIR} -I${LISP_INCLUDE_DIR}
  2552. X
  2553. XLISP_LIB_DIR = /home/xlisp/lib/
  2554. XPUB_LIB_DIR = ${HOME}lib/
  2555. X
  2556. XPUB_EXEC_DIR = ${HOME}bin/
  2557. X
  2558. X#--------------------------------------------------------------------------------------
  2559. X
  2560. Xinclude $(HOME)src/machine_specific.mk
  2561. X
  2562. X#--------------------------------------------------------------------------------------
  2563. X
  2564. Xclean:
  2565. X    - /bin/rm -f $(UTIL_SRC_DIR)*.o
  2566. X    - /bin/rm -f $(PUB_LIB_DIR)libxvutils.a
  2567. X
  2568. X#--------------------------------------------------------------------------------------
  2569. X
  2570. X###
  2571. X### an xlisp utils library
  2572. X###
  2573. X
  2574. Xutils: ${PUB_LIB_DIR}libxvutils.a
  2575. X
  2576. X${PUB_LIB_DIR}libxvutils.a: \
  2577. X        ${UTIL_SRC_DIR}xv_utils.o \
  2578. X        ${UTIL_SRC_DIR}error_check.o \
  2579. X        ${UTIL_SRC_DIR}xform_prims.o 
  2580. X    ${AR} $@ $?
  2581. X    ${UPDATE_LIB} $@
  2582. X
  2583. X#--------------------------------------------------------------------------------------
  2584. X
  2585. X###
  2586. X### miscellaneous .o files
  2587. X###
  2588. X
  2589. X.c.o:
  2590. X    ${CC} -c -o $@ $<
  2591. X
  2592. X.c:
  2593. X
  2594. X#--------------------------------------------------------------------------------------
  2595. X
  2596. X
  2597. END_OF_FILE
  2598. if test 1472 -ne `wc -c <'src/utils/makefile'`; then
  2599.     echo shar: \"'src/utils/makefile'\" unpacked with wrong size!
  2600. fi
  2601. # end of 'src/utils/makefile'
  2602. fi
  2603. if test -f 'src/utils/xform_prims.h' -a "${1}" != "-c" ; then 
  2604.   echo shar: Will not clobber existing file \"'src/utils/xform_prims.h'\"
  2605. else
  2606. echo shar: Extracting \"'src/utils/xform_prims.h'\" \(1393 characters\)
  2607. sed "s/^X//" >'src/utils/xform_prims.h' <<'END_OF_FILE'
  2608. X/* xform_prims.h
  2609. X
  2610. X   by dav lion, at the HITLab, Seattle
  2611. X
  2612. X   Copyright (C) 1992  Human Interface Technology Lab, Seattle
  2613. X
  2614. X   xlisp wrappers for C based matrix geometrical transformation routines
  2615. X
  2616. X   this code is part of VEOS.
  2617. X*/   
  2618. X
  2619. X
  2620. X#ifndef _XFORMH_
  2621. X#define _XFORMH_
  2622. X
  2623. X#include <xlisp.h>
  2624. X
  2625. Xtypedef float Matrix[4][4];        /* 4x4 matrix             */
  2626. Xtypedef float Vector[3];        /* Vector             */
  2627. Xtypedef float Quaternion[4];
  2628. X
  2629. Xextern LVAL xform01_identMat();
  2630. Xextern LVAL xform02_multMat();
  2631. Xextern LVAL xform03_translateMat();
  2632. Xextern LVAL xform04_PosQuat2Mat();
  2633. Xextern LVAL xform05_scaleMat();
  2634. Xextern LVAL xform06_shearMat();
  2635. Xextern LVAL xform07_copyMat();
  2636. Xextern LVAL xform08_multQuats();
  2637. Xextern LVAL xform09_Mat2PosQuat();
  2638. X
  2639. X/* from vogl distribution
  2640. X * How to convert degrees to radians
  2641. X */
  2642. X#define    PI    3.14159265358979
  2643. X#define D2R    (PI / 180.0)
  2644. X
  2645. X
  2646. X#define EPSILON 0.000001
  2647. X#define FEPS(a,b)        ((a>(b-.0001)) && (a<(b+.0001)))
  2648. X
  2649. Xstatic    Matrix    mIdentityMatrix = {
  2650. X        {1., 0., 0., 0.},
  2651. X        {0., 1., 0., 0.,},
  2652. X        {0., 0., 1., 0.,},
  2653. X        {0., 0., 0., 1.,}
  2654. X        };/*identityMatrix*/
  2655. X
  2656. X#define v_float(v, n) getflonum(getelement(v, n))
  2657. X#define m_float(m, i, j) getflonum(getelement(m, (i * 4) + j))
  2658. X#define v_fixnum(v, n) getfixnum(getelement(v, n))
  2659. X
  2660. X#define stuff_fixnum(arg, ind, val) ((arg)->n_vdata[ind])->n_fixnum = (val)
  2661. X#define stuff_flonum(arg, ind, val) ((arg)->n_vdata[ind])->n_flonum = (val)
  2662. X
  2663. X
  2664. X
  2665. X#endif
  2666. END_OF_FILE
  2667. if test 1393 -ne `wc -c <'src/utils/xform_prims.h'`; then
  2668.     echo shar: \"'src/utils/xform_prims.h'\" unpacked with wrong size!
  2669. fi
  2670. # end of 'src/utils/xform_prims.h'
  2671. fi
  2672. if test -f 'src/utils/xv_utils.h' -a "${1}" != "-c" ; then 
  2673.   echo shar: Will not clobber existing file \"'src/utils/xv_utils.h'\"
  2674. else
  2675. echo shar: Extracting \"'src/utils/xv_utils.h'\" \(1172 characters\)
  2676. sed "s/^X//" >'src/utils/xv_utils.h' <<'END_OF_FILE'
  2677. X/****************************************************************************************
  2678. X *                                            *
  2679. X * file: xv_utils.c                                    *
  2680. X *                                            *
  2681. X * Sundry lisp utils for the veos project                        *
  2682. X *                                            *
  2683. X * creation: March 28, 1991                                *
  2684. X *                                            *
  2685. X *                                            *
  2686. X * Includes utilities by:                                *
  2687. X *                                            *
  2688. X *    Geoff Coco                                    *
  2689. X *    Dav Lion                                    *
  2690. X *    Andy McDonald                                    *
  2691. X *    Fran Taylor                                    *
  2692. X *                                            *
  2693. X ****************************************************************************************/
  2694. X
  2695. X
  2696. X/****************************************************************************************
  2697. X * Copyright (C) 1992  Human Interface Technology Lab, Seattle                *
  2698. X ****************************************************************************************/
  2699. X
  2700. X
  2701. X#ifdef UTIL_LOAD
  2702. XDEFINE_SUBR("READ-TIME", read_time)
  2703. XDEFINE_SUBR("SPRINTF", native_sprintf )
  2704. XDEFINE_SUBR("PRINTF", native_printf )
  2705. XDEFINE_SUBR("PRINTF1", native_printf1 )
  2706. XDEFINE_SUBR("SSCANF", native_sscanf )
  2707. X#endif
  2708. X
  2709. X#ifdef UTIL_DEFS
  2710. Xextern LVAL read_time();
  2711. Xextern LVAL native_sprintf();
  2712. Xextern LVAL native_printf();
  2713. Xextern LVAL native_printf1();
  2714. Xextern LVAL native_sscanf();
  2715. X#endif
  2716. END_OF_FILE
  2717. if test 1172 -ne `wc -c <'src/utils/xv_utils.h'`; then
  2718.     echo shar: \"'src/utils/xv_utils.h'\" unpacked with wrong size!
  2719. fi
  2720. # end of 'src/utils/xv_utils.h'
  2721. fi
  2722. if test ! -d 'src/xlisp' ; then
  2723.     echo shar: Creating directory \"'src/xlisp'\"
  2724.     mkdir 'src/xlisp'
  2725. fi
  2726. if test -f 'src/xlisp/Makefile' -a "${1}" != "-c" ; then 
  2727.   echo shar: Will not clobber existing file \"'src/xlisp/Makefile'\"
  2728. else
  2729. echo shar: Extracting \"'src/xlisp/Makefile'\" \(363 characters\)
  2730. sed "s/^X//" >'src/xlisp/Makefile' <<'END_OF_FILE'
  2731. X#
  2732. X#        "... and one Ring to rule them all."
  2733. X#
  2734. X# Master makefile to build xlisp-plus-selected-extension-modules.
  2735. X#
  2736. X
  2737. Xall:    bare
  2738. X
  2739. Xxlisplib:
  2740. X    cd xcore/c;        $(MAKE) -${MAKEFLAGS}                 xlisplib
  2741. X    
  2742. Xbare: xlisplib
  2743. X    cd xexec/c;        $(MAKE) -${MAKEFLAGS}                 bare
  2744. X
  2745. Xclean:
  2746. X    cd xcore/c;       ${MAKE} -${MAKEFLAGS}                 clean
  2747. X
  2748. X
  2749. X
  2750. X
  2751. X
  2752. X
  2753. X
  2754. X
  2755. END_OF_FILE
  2756. if test 363 -ne `wc -c <'src/xlisp/Makefile'`; then
  2757.     echo shar: \"'src/xlisp/Makefile'\" unpacked with wrong size!
  2758. fi
  2759. # end of 'src/xlisp/Makefile'
  2760. fi
  2761. if test -f 'src/xlisp/Makefile.basic' -a "${1}" != "-c" ; then 
  2762.   echo shar: Will not clobber existing file \"'src/xlisp/Makefile.basic'\"
  2763. else
  2764. echo shar: Extracting \"'src/xlisp/Makefile.basic'\" \(424 characters\)
  2765. sed "s/^X//" >'src/xlisp/Makefile.basic' <<'END_OF_FILE'
  2766. X#
  2767. X#    Xlisp compilation control
  2768. X#
  2769. X
  2770. X
  2771. X# The directory you installed the xlisp fileset in:
  2772. XXLISPROOT= /home/voodoo/veos/src/xlisp
  2773. XXLISP_LIB_DIR= $(XLISPROOT)/lib
  2774. X
  2775. XVEOS_LIB_DIR= /home/voodoo/veos/lib
  2776. XVEOS_EXEC_DIR= /home/voodoo/veos/bin
  2777. X
  2778. X
  2779. Xinclude $(XLISPROOT)/Makefile.machine_specific
  2780. X
  2781. XCFLAGS= ${XLISPCFLAGS}
  2782. X
  2783. X.c.o:
  2784. X    ${CC} -o -c ${CFLAGS} $< ${INCLUDES}
  2785. X
  2786. Xclean:
  2787. X    - /bin/rm -f *.o *~
  2788. X    - /bin/rm -f $(XLISP_LIB_DIR)/*.a *~
  2789. X        
  2790. X
  2791. X
  2792. END_OF_FILE
  2793. if test 424 -ne `wc -c <'src/xlisp/Makefile.basic'`; then
  2794.     echo shar: \"'src/xlisp/Makefile.basic'\" unpacked with wrong size!
  2795. fi
  2796. # end of 'src/xlisp/Makefile.basic'
  2797. fi
  2798. if test -f 'src/xlisp/Makefile.machine_specific' -a "${1}" != "-c" ; then 
  2799.   echo shar: Will not clobber existing file \"'src/xlisp/Makefile.machine_specific'\"
  2800. else
  2801. echo shar: Extracting \"'src/xlisp/Makefile.machine_specific'\" \(326 characters\)
  2802. sed "s/^X//" >'src/xlisp/Makefile.machine_specific' <<'END_OF_FILE'
  2803. X# use these for Sun4
  2804. X
  2805. X
  2806. XCC= cc
  2807. XXLISPCFLAGS= -O2 -w 
  2808. X
  2809. X# use -DOPTIMAL for a very fast xlisp interpreter.
  2810. X# this removes all setjmp()s and longjmp()s.
  2811. X# the resulting executable cannot recover from
  2812. X# lisp errors.  instead, it will exit gracefully.
  2813. X
  2814. XAR= /usr/gnu/bin/ar
  2815. XXLISPARFLAGS= rv
  2816. X
  2817. XXLISPRANLIB= ranlib
  2818. X
  2819. XLD= /usr/gnu/bin/ld
  2820. X
  2821. END_OF_FILE
  2822. if test 326 -ne `wc -c <'src/xlisp/Makefile.machine_specific'`; then
  2823.     echo shar: \"'src/xlisp/Makefile.machine_specific'\" unpacked with wrong size!
  2824. fi
  2825. # end of 'src/xlisp/Makefile.machine_specific'
  2826. fi
  2827. if test ! -d 'src/xlisp/bin' ; then
  2828.     echo shar: Creating directory \"'src/xlisp/bin'\"
  2829.     mkdir 'src/xlisp/bin'
  2830. fi
  2831. if test ! -d 'src/xlisp/lib' ; then
  2832.     echo shar: Creating directory \"'src/xlisp/lib'\"
  2833.     mkdir 'src/xlisp/lib'
  2834. fi
  2835. if test ! -d 'src/xlisp/xcore' ; then
  2836.     echo shar: Creating directory \"'src/xlisp/xcore'\"
  2837.     mkdir 'src/xlisp/xcore'
  2838. fi
  2839. if test ! -d 'src/xlisp/xcore/c' ; then
  2840.     echo shar: Creating directory \"'src/xlisp/xcore/c'\"
  2841.     mkdir 'src/xlisp/xcore/c'
  2842. fi
  2843. if test -f 'src/xlisp/xcore/c/COPYRIGHT' -a "${1}" != "-c" ; then 
  2844.   echo shar: Will not clobber existing file \"'src/xlisp/xcore/c/COPYRIGHT'\"
  2845. else
  2846. echo shar: Extracting \"'src/xlisp/xcore/c/COPYRIGHT'\" \(1966 characters\)
  2847. sed "s/^X//" >'src/xlisp/xcore/c/COPYRIGHT' <<'END_OF_FILE'
  2848. X********************************************************************************
  2849. X* WINTERP 1.0 Copyright 1989 Hewlett-Packard Company (by Niels Mayer).
  2850. X* XLISP version 2.1, Copyright (c) 1989, by David Betz.
  2851. X*
  2852. X* Permission to use, copy, modify, distribute, and sell this software and its
  2853. X* documentation for any purpose is hereby granted without fee, provided that
  2854. X* the above copyright notice appear in all copies and that both that
  2855. X* copyright notice and this permission notice appear in supporting
  2856. X* documentation, and that the name of Hewlett-Packard and David Betz not be
  2857. X* used in advertising or publicity pertaining to distribution of the software
  2858. X* without specific, written prior permission.  Hewlett-Packard and David Betz
  2859. X* make no representations about the suitability of this software for any
  2860. X* purpose. It is provided "as is" without express or implied warranty.
  2861. X*
  2862. X* HEWLETT-PACKARD AND DAVID BETZ DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  2863. X* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  2864. X* IN NO EVENT SHALL HEWLETT-PACKARD NOR DAVID BETZ BE LIABLE FOR ANY SPECIAL,
  2865. X* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  2866. X* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  2867. X* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  2868. X* PERFORMANCE OF THIS SOFTWARE.
  2869. X* 
  2870. X* WINTERP AUTHOR:
  2871. X*        Niels P. Mayer,
  2872. X*        Hewlett-Packard Laboratories,
  2873. X*        Software Technology Lab
  2874. X*        Human-Computer Interaction Department
  2875. X*        Collaborative Interaction Tools Group
  2876. X* 
  2877. X*     Mailing Address:
  2878. X*        Hewlett Packard
  2879. X*        Niels Mayer 1U/17
  2880. X*        P.O. Box 10490
  2881. X*        Palo Alto, CA  94303-0969
  2882. X* 
  2883. X*     Email Address:
  2884. X*        internet: mayer@hplabs.hp.com
  2885. X*        uucp:     hplabs!mayer
  2886. X*
  2887. X* XLISP AUTHOR:
  2888. X*              David Betz
  2889. X*              P.O. Box 144
  2890. X*              Peterborough, NH 03458
  2891. X*              (603) 924-4145
  2892. X********************************************************************************
  2893. END_OF_FILE
  2894. if test 1966 -ne `wc -c <'src/xlisp/xcore/c/COPYRIGHT'`; then
  2895.     echo shar: \"'src/xlisp/xcore/c/COPYRIGHT'\" unpacked with wrong size!
  2896. fi
  2897. # end of 'src/xlisp/xcore/c/COPYRIGHT'
  2898. fi
  2899. if test -f 'src/xlisp/xcore/c/Makefile' -a "${1}" != "-c" ; then 
  2900.   echo shar: Will not clobber existing file \"'src/xlisp/xcore/c/Makefile'\"
  2901. else
  2902. echo shar: Extracting \"'src/xlisp/xcore/c/Makefile'\" \(1207 characters\)
  2903. sed "s/^X//" >'src/xlisp/xcore/c/Makefile' <<'END_OF_FILE'
  2904. X#
  2905. X#    Xlisp compilation control
  2906. X#
  2907. X
  2908. X
  2909. X#
  2910. X#    Xlisp compilation control
  2911. X#
  2912. X
  2913. X#
  2914. X#    Xlisp compilation control
  2915. X#
  2916. X
  2917. Xinclude ../../Makefile.basic
  2918. X
  2919. XXLISP_LIB = $(XLISP_LIB_DIR)/libxlisp.a
  2920. Xxlisplib: $(XLISP_LIB)
  2921. X
  2922. X
  2923. XHEADER=
  2924. XINCLUDES= 
  2925. X
  2926. XXLISPLIBOBJS= \
  2927. X  $(XLISP_LIB)(unixstuff.o) \
  2928. X  $(XLISP_LIB)(xlbfun.o) \
  2929. X  $(XLISP_LIB)(xlcont.o) \
  2930. X  $(XLISP_LIB)(xldbug.o) \
  2931. X  $(XLISP_LIB)(xldmem.o) \
  2932. X  $(XLISP_LIB)(xleval.o) \
  2933. X  $(XLISP_LIB)(xlfio.o) \
  2934. X  $(XLISP_LIB)(xlftab.o) \
  2935. X  $(XLISP_LIB)(xlglob.o) \
  2936. X  $(XLISP_LIB)(xlimage.o) \
  2937. X  $(XLISP_LIB)(xlinit.o) \
  2938. X  $(XLISP_LIB)(xlio.o) \
  2939. X  $(XLISP_LIB)(xljump.o) \
  2940. X  $(XLISP_LIB)(xllist.o) \
  2941. X  $(XLISP_LIB)(xlmath.o) \
  2942. X  $(XLISP_LIB)(xlobj.o) \
  2943. X  $(XLISP_LIB)(xlpp.o) \
  2944. X  $(XLISP_LIB)(xlprin.o) \
  2945. X  $(XLISP_LIB)(xlread.o) \
  2946. X  $(XLISP_LIB)(xlstr.o) \
  2947. X  $(XLISP_LIB)(xlstruct.o) \
  2948. X  $(XLISP_LIB)(xlsubr.o) \
  2949. X  $(XLISP_LIB)(xlsym.o) \
  2950. X  $(XLISP_LIB)(xlsys.o) \
  2951. X  $(XLISP_LIB)(xmain.o)
  2952. X
  2953. X$(XLISPLIBOBJS): ../../xmodules.h xlisp.h xldmem.h
  2954. X
  2955. X
  2956. X${XLISPLIBOBJS}:
  2957. X    ${CC} -c ${CFLAGS} ${INCLUDES} $<
  2958. X    ${LD} -r $*.o
  2959. X    /bin/mv a.out $*.o
  2960. X    ${AR} ${XLISPARFLAGS} $@ $*.o
  2961. X    /bin/rm $*.o
  2962. X
  2963. X
  2964. X$(XLISP_LIB): ${XLISPLIBOBJS} 
  2965. X    ${XLISPRANLIB} $@
  2966. X    cp $@ $(VEOS_LIB_DIR)/.
  2967. X    ${XLISPRANLIB} $(VEOS_LIB_DIR)/libxlisp.a
  2968. X
  2969. END_OF_FILE
  2970. if test 1207 -ne `wc -c <'src/xlisp/xcore/c/Makefile'`; then
  2971.     echo shar: \"'src/xlisp/xcore/c/Makefile'\" unpacked with wrong size!
  2972. fi
  2973. # end of 'src/xlisp/xcore/c/Makefile'
  2974. fi
  2975. if test -f 'src/xlisp/xcore/c/osdefs.h' -a "${1}" != "-c" ; then 
  2976.   echo shar: Will not clobber existing file \"'src/xlisp/xcore/c/osdefs.h'\"
  2977. else
  2978. echo shar: Extracting \"'src/xlisp/xcore/c/osdefs.h'\" \(2054 characters\)
  2979. sed "s/^X//" >'src/xlisp/xcore/c/osdefs.h' <<'END_OF_FILE'
  2980. X/* -*-C-*-
  2981. X********************************************************************************
  2982. X*
  2983. X* File:         osdefs.h
  2984. X* RCS:          $Header: osdefs.h,v 1.2 89/11/25 05:08:00 mayer Exp $
  2985. X* Description:  system specific function declarations
  2986. X* Author:       David Michael Betz
  2987. X* Created:      
  2988. X* Modified:     Sat Nov 25 05:07:43 1989 (Niels Mayer) mayer@hplnpm
  2989. X* Language:     C
  2990. X* Package:      N/A
  2991. X* Status:       X11r4 contrib tape release
  2992. X*
  2993. X* WINTERP 1.0 Copyright 1989 Hewlett-Packard Company (by Niels Mayer).
  2994. X* XLISP version 2.1, Copyright (c) 1989, by David Betz.
  2995. X*
  2996. X* Permission to use, copy, modify, distribute, and sell this software and its
  2997. X* documentation for any purpose is hereby granted without fee, provided that
  2998. X* the above copyright notice appear in all copies and that both that
  2999. X* copyright notice and this permission notice appear in supporting
  3000. X* documentation, and that the name of Hewlett-Packard and David Betz not be
  3001. X* used in advertising or publicity pertaining to distribution of the software
  3002. X* without specific, written prior permission.  Hewlett-Packard and David Betz
  3003. X* make no representations about the suitability of this software for any
  3004. X* purpose. It is provided "as is" without express or implied warranty.
  3005. X*
  3006. X* HEWLETT-PACKARD AND DAVID BETZ DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  3007. X* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  3008. X* IN NO EVENT SHALL HEWLETT-PACKARD NOR DAVID BETZ BE LIABLE FOR ANY SPECIAL,
  3009. X* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  3010. X* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  3011. X* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  3012. X* PERFORMANCE OF THIS SOFTWARE.
  3013. X*
  3014. X* See ./winterp/COPYRIGHT for information on contacting the authors.
  3015. X* 
  3016. X* Please send modifications, improvements and bugfixes to mayer@hplabs.hp.com
  3017. X* Post XLISP-specific questions/information to the newsgroup comp.lang.lisp.x
  3018. X*
  3019. X********************************************************************************
  3020. X*/
  3021. END_OF_FILE
  3022. if test 2054 -ne `wc -c <'src/xlisp/xcore/c/osdefs.h'`; then
  3023.     echo shar: \"'src/xlisp/xcore/c/osdefs.h'\" unpacked with wrong size!
  3024. fi
  3025. # end of 'src/xlisp/xcore/c/osdefs.h'
  3026. fi
  3027. if test -f 'src/xlisp/xcore/c/osptrs.h' -a "${1}" != "-c" ; then 
  3028.   echo shar: Will not clobber existing file \"'src/xlisp/xcore/c/osptrs.h'\"
  3029. else
  3030. echo shar: Extracting \"'src/xlisp/xcore/c/osptrs.h'\" \(2050 characters\)
  3031. sed "s/^X//" >'src/xlisp/xcore/c/osptrs.h' <<'END_OF_FILE'
  3032. X/* -*-C-*-
  3033. X********************************************************************************
  3034. X*
  3035. X* File:         osptrs.h
  3036. X* RCS:          $Header: osptrs.h,v 1.2 89/11/25 05:10:18 mayer Exp $
  3037. X* Description:  system specific function pointers
  3038. X* Author:       David Michael Betz
  3039. X* Created:      
  3040. X* Modified:     Sat Nov 25 05:10:11 1989 (Niels Mayer) mayer@hplnpm
  3041. X* Language:     C
  3042. X* Package:      N/A
  3043. X* Status:       X11r4 contrib tape release
  3044. X*
  3045. X* WINTERP 1.0 Copyright 1989 Hewlett-Packard Company (by Niels Mayer).
  3046. X* XLISP version 2.1, Copyright (c) 1989, by David Betz.
  3047. X*
  3048. X* Permission to use, copy, modify, distribute, and sell this software and its
  3049. X* documentation for any purpose is hereby granted without fee, provided that
  3050. X* the above copyright notice appear in all copies and that both that
  3051. X* copyright notice and this permission notice appear in supporting
  3052. X* documentation, and that the name of Hewlett-Packard and David Betz not be
  3053. X* used in advertising or publicity pertaining to distribution of the software
  3054. X* without specific, written prior permission.  Hewlett-Packard and David Betz
  3055. X* make no representations about the suitability of this software for any
  3056. X* purpose. It is provided "as is" without express or implied warranty.
  3057. X*
  3058. X* HEWLETT-PACKARD AND DAVID BETZ DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  3059. X* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  3060. X* IN NO EVENT SHALL HEWLETT-PACKARD NOR DAVID BETZ BE LIABLE FOR ANY SPECIAL,
  3061. X* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  3062. X* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  3063. X* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  3064. X* PERFORMANCE OF THIS SOFTWARE.
  3065. X*
  3066. X* See ./winterp/COPYRIGHT for information on contacting the authors.
  3067. X* 
  3068. X* Please send modifications, improvements and bugfixes to mayer@hplabs.hp.com
  3069. X* Post XLISP-specific questions/information to the newsgroup comp.lang.lisp.x
  3070. X*
  3071. X********************************************************************************
  3072. X*/
  3073. END_OF_FILE
  3074. if test 2050 -ne `wc -c <'src/xlisp/xcore/c/osptrs.h'`; then
  3075.     echo shar: \"'src/xlisp/xcore/c/osptrs.h'\" unpacked with wrong size!
  3076. fi
  3077. # end of 'src/xlisp/xcore/c/osptrs.h'
  3078. fi
  3079. if test ! -d 'src/xlisp/xcore/doc' ; then
  3080.     echo shar: Creating directory \"'src/xlisp/xcore/doc'\"
  3081.     mkdir 'src/xlisp/xcore/doc'
  3082. fi
  3083. echo shar: End of archive 1 \(of 16\).
  3084. cp /dev/null ark1isdone
  3085. MISSING=""
  3086. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
  3087.     if test ! -f ark${I}isdone ; then
  3088.     MISSING="${MISSING} ${I}"
  3089.     fi
  3090. done
  3091. if test "${MISSING}" = "" ; then
  3092.     echo You have unpacked all 16 archives.
  3093.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  3094. else
  3095.     echo You still need to unpack the following archives:
  3096.     echo "        " ${MISSING}
  3097. fi
  3098. ##  End of shell archive.
  3099. exit 0
  3100.